闲来无事
看到一篇并查集的文章
感觉年代久远有点忘了这个咋玩的了
遂写了一下
感觉还蛮有用的
也蛮有意思的
希望以后工作有机会也玩一下
class UnionFind{
int size;
int []id;
public UnionFind(int k){
size = k;
id = new int[k];
for(int i = 0;i < k; i++){
id[i] = i;
}
}
public int find(int k){
return id[k];
}
public boolean isSameFather(int i1, int i2){
return find(i1) == find(i2);
}
public void merge(int i1, int i2){
int f1 = find(i1);
int f2 = find(i2);
if(f1 != f2){
for(int i = 0; i < size; i++){
if(id[i] == f2){
id[i] = f1;
}
}
}
}
}