代码来源:晴神《算法笔记》!!
基本操作
初始化
for (int i = 1; i <= n; i++){
father[i] = i;
}
查找父亲
//查找(路径压缩版)
int find(int x){
int a = x;
while(x != father[x]){
x = father[x];
}
while(a != father[a]){
int z = a;
a = father[a];
father[z] = x;
}
return x;
}
合并
//合并
void union(int a, int b){
int faA = find(a);
int faB = find(b);
if(faA != faB) father[faA] = faB;
}