Find if Path Exists in Graph
给一个无环双向图, 找是否有一个path.
这题就union find的模板题.
class Solution {
class DSU{
int[] p;
public DSU(int size) {
this.p = new int[size];
for(int i = 0; i < size; i++) {
p[i] = i;
}
}
int get(int v) {
if(p[v] == v)
return v;
return p[v] = get(p[v]);
}
boolean union(int a, int b) {
a = get(a);
b = get(b);
if(a == b)
return false;
p[a] = b;
return true;
}
}
public boolean validPath(int n, int[][] edges, int start, int end) {
if(edges == null || edges.length == 0)
if(n == 1 && start == 0 && end == 0)
return true;
else
return false;
DSU dsu = new DSU(n);
for(int[] e : edges)
dsu.union(e[0],e[1]);
return dsu.get(start) == dsu.get(end);
}
}