#include<iostream> #include<algorithm> using namespace std; const int N=1e5; struct edge{ int a,b,w; }e[N]; bool cmp(edge a,edge b) { return a.w<b.w; } int p[N]; int find(int x) { if(p[x]!=x) p[x]=find(p[x]); return p[x]; } int main() { int n,m; while(cin>>n>>m&&n) { for(int i=1;i<=n;i++) p[i]=i; for(int i=0;i<m;i++) { int a,b,w; cin>>a>>b>>w; e[i]={a,b,w}; } sort(e,e+m,cmp); int sum=0; for(int i=0;i<m;i++) { int a=find(e[i].a); int b=find(e[i].b); int w=e[i].w; if(a!=b) { p[a]=b; sum+=w; } } cout<<sum<<endl; } }
原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12239850.html
时间: 2024-11-05 18:47:59