@[HLPP](/space/show?uid=192837)
总之先谢谢您啦
by return_dirt @ 2019-10-04 20:43:21
@[return_dirt](/space/show?uid=180059)
同学,你合并的时候找到的不是这个集合的最头上的爸爸,我举个例子,1的父亲是3,2的父亲是4,3的父亲是4,按理说1和2应是一个集合的,but你合并的操作是没办法找到的。
我习惯下一个找爸爸的函数,一个合并的函数,
```cpp
int zhao(int x) {
if(fa[x]==x)
return x;
return fa[x]=zhao(fa[x]);
}
int bing(int a,int b) {
int x=zhao(a),y=zhao(b);
if(x!=y)
fa[x]=y;
}
```
像这样
合并的时候比较的就不是爸爸,可以说找的是祖宗,如下
```cpp
sort(a+1,a+1+m,com);
for(int i=1; i<=m; i++) {
if(zhao(a[i].next)==zhao(a[i].to))
continue;
```
by 人中 @ 2019-10-04 21:57:12
@[人中](/space/show?uid=170469)
好的,谢谢
by return_dirt @ 2019-10-05 08:01:13