并查集的Java实现
public class UnionSet {
private int[] table;
public UnionSet(int n) {
table=new int[n];
for(int i=0;i<n;++i) table[i]=i;
}
public int find(int index){
int root=index;
while (root!=table[root]) root=table[root];
int son=index,tmp;
while (son!=root){
tmp=table[son];
table[son]=root;
son=tmp;
}
return root;
}
public boolean unite(int element1,int element2){
int root1=find(element1),root2=find(element2);
if(root1==root2) return false;
else{
table[root2]=root1;
return true;
}
}
public boolean isConnect(int element1,int element2){
return find(element1)==find(element2);
}
}