1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <bits/stdc++.h> using namespace std; int fa[1000];//父亲 用于并查集 int m,n,cnt,ans; struct edge{ int u,v,w,nxt; }e[100]; bool cmp(edge x,edge y){ return x.w<y.w; } int find(int x){ if(x==fa[x]) return x; return fa[x]=find(fa[x]); } void merge(int x,int y){ fa[find(x)]=find(y); } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) fa[i]=i; for(int i=1;i<=m;i++) cin>>e[i].u>>e[i].v>>e[i].w; sort(e+1,e+m+1,cmp); for(int i=1;i<=m;i++){ if(find(e[i].u)!=find(e[i].v)){ merge(e[i].u,e[i].v); ans+=e[i].w; cnt++; } if(cnt==n-1){ break; } } }
|