由中国武林发明的算法---查找X在哪一个团体(帮派)
并查集的英文name:Union Find Set
图形理解:
代码:
第一步(我就是我祖宗):
int findfa(int x){
if(fa[x]==x) return x;
return findfa(fs[x]);
}
优化:
int findFa(int x){
if(fa[x]==x) return x;
return fa[x]=findFa(fa[x]);
}
第二步,家庭合并(让a帮派的祖宗叫b帮派的祖宗爸爸):
void unionF(int x,int y){
int xF=findFa(x); //找爸爸
int yF=findFa(y); //找爸爸
if(xF!=yF) fa[xF]=yF;//当场认亲
}
第三步初始化:
for(int i=1;i<=i;i++){
fa[i]-i;
}
第四步写框架: 有手就行
#include<bits/stdc++.h>
using namespace std;
int main(){
return 0;
}