算法 1.5 union-find算法
public class UF {
private int[] id;
private int count;
public UF(int N){
count = N;
id = new int[N];
for (int i = 0; i < id.length; i++) {
id[i] = i;
}
}
public void union(int p,int q){
if (connection(p,q)){
return;
}
id[find(p)] = find(q);
count--;
}
public int find(int p){
while (id[p]!=p){
p=id[p];
}
return p;
}
public boolean connection(int p,int q){
return find(p) == find(q);
}
public int count(){
return count;
}
}