并查集简单学
第一次记录(感谢前辈指导)
递归查找
int find(int x) {
if(bb[x] == x) return x;
return bb[x] = find(bb[x]);
}
循环查找
void find(int x) {
while(x != bb[x]) {
x = bb[x] ==bb[bb[x]];
}
}
合并两子集
void merge(int x, int y) {
x = find(x);
y = find(y);
if(x != y) {
bb[y] = x;
}
}
这篇文章写的通俗易懂,推荐一下
并查集