蒟蒻求助,悬赏关注!

P3366 【模板】最小生成树

@[crzcqh](/user/769006) 你的merge函数写错了(还有这道题不用dfs一遍的),改了一下AC了 ```cpp #include<bits/stdc++.h> using namespace std; int n,m,cnt,ans=0,num=0; int fa[5005],head[5005]; struct node{ int u,v,w; }e[200010]; int find(int x){ if(fa[x]==x) return x; return fa[x]=find(fa[x]); } int merge(int x1,int x2){ if(find(x1)!=find(x2)){ fa[find(x1)]=find(x2); return 1; } return 0; } bool cmp(node a,node b){ return a.w<b.w; } int main(){ cin>>n>>m; for(int i=1;i<=m;i++){ scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); } for(int i=1;i<=n;i++) fa[i]=i; sort(e+1,e+m+1,cmp); for(int i=1;i<=m;i++){ if(merge(e[i].u,e[i].v)){ //printf("(%d,%d)\n",e[i].u,e[i].v); num++; ans+=e[i].w; } } if(num<n-1) printf("orz\n"); else cout<<ans; return 0; } ```
by Polaris_flame @ 2023-08-13 13:00:47


@[Polaris_flame](/user/1046448) 好的,谢谢!
by 菜のcrzOvO @ 2023-08-13 20:13:42


克鲁斯卡尔对吧?不需要dfs的其实,另外merge函数写错了,题解里有大佬列出路径压缩为什么这样写,建议去看看
by Soda_mew @ 2023-08-14 18:04:10


|