并查集
并查集三部曲
1、初始化并查集数组
void init() {
for (int i = 1; i <= n; i++) {
pa[i] = i;
}
}
2、查找x在并查集中的父亲
int find(int x) {
return x == pa[x] ? x : pa[x] = find(pa[x]);
}
3、合并两个集合
void Union(int a, int b) {
int ra = find(a), rb = find(b);
if (ra < rb) {
pa[rb] = ra;
} else {
pa[ra] = rb;
}
}