(一)寻找帮会老大
int getf(int v){
if(f[v]==v)return v;
else{
f[v]=getf(f[v]);
return f[v];
}
}
如果某个人的大哥不是他自己的话,证明这个人并非帮会老大。
所以就要递归寻找他大哥的大哥,一直找到帮会老大为止,递归开始返回。
返回的时候需要注意,让途经所有人的大哥都变成帮会老大,所以每次返回的是帮会老大。
(二)帮会合并
int merge(int u,int v){
int t1=getf(u);
int t2=getf(v);
if(t1!=t2){
f[t2]=t1;
return 1;
}
return 0;
}