题目地址:
https://leetcode.com/problems/find-if-path-exists-in-graph/
给定一个 n n n个顶点的无向图,问某两个点之间是否有路径。
可以用并查集。代码如下:
public class Solution {
int[] p;
int find(int x) {
if (p[x] != x) {
p[x] = find(p[x]);
}
return p[x];
}
public boolean validPath(int n, int[][] edges, int start, int end) {
p = new int[n];
for (int i = 0; i < n; i++) {
p[i] = i;
}
for (int[] edge : edges) {
p[find(edge[0])] = find(edge[1]);
}
return find(start) == find(end);
}
}
时间复杂度 O ( n log ∗ n ) O(n\log^*n) O(nlog∗n),空间 O ( n ) O(n) O(n)。