10分 kruskal 求助

P3366 【模板】最小生成树

@[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


上一页 |