一、主要操作
1、初始化
// 把所有元素的祖源设为本身特有记号(一般就用下标)
void init() {
for (int i = 1; i <= n; i++) {
fa[i] = i;
size[i] = 1;
}
}
2、找祖源
// 递归寻找
int find(int x) {
if(fa[x] == x) return x;
else return fa[x] = find(fa[x]);
}
3、合并连通块
// 将 a 所在的祖源块并入 b 所在的祖源块中
void merge(int a,int b) {
int x = find(a);
int y = find(b);
fa[x] = y;
size[y] += size[x];
}
4、判断是否连通
// 查找祖源看是否相同
bool ask(int a,int b) {
return find(a) == find(b);
}