- 访问所有节点的最短路径
存在一个由 n 个节点组成的无向连通图,图中的节点按从 0 到 n - 1 编号。
给你一个数组 graph 表示这个图。其中,graph[i] 是一个列表,由所有与节点 i 直接相连的节点组成。
返回能够访问所有节点的最短路径的长度。你可以在任一节点开始和停止,也可以多次重访节点,并且可以重用边。
示例 1:
输入:graph = [[1,2,3],[0],[0],[0]]
输出:4
解释:一种可能的路径为 [1,0,2,0,3]
示例 2:
输入:graph = [[1],[0,2,4],[1,3,4],[2],[1,2]]
输出:4
解释:一种可能的路径为 [0,1,4,2,3]
使用BFS方法进行路径
路径压缩表示走过或者未走过的行为
二进制 1 表示已经走过 0 表示未走过
1 << i 表示第i位的状态
更新状态用 |
state | ( 1 << i )
private final int INF = Integer.MAX_VALUE;
// 无向图的最短路径
public int shortestPathLength(int[][] graph) {
int n = graph.length;
int mask = 1 << n;
// 初始化队列