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
|
#include<algorithm> using namespace std; int n,m,f[5005],ans,cnt,fx,fy; struct { int x,y,z; } a[200005]; bool cmp(node x,node y) { return x.z<y.z; } int find(int k) { if(f[k]==k)return k; return f[k]=find(f[k]); } int main() { scanf("%d%d",&n,&m); for(int i=1; i<=n; i++)f[i]=i; for(int i=1; i<=m; i++) { scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z); } sort(a+1,a+1+m,cmp); for(int i=1; i<=m; i++) { fx=find(a[i].x);fy=find(a[i].y); if(fx==fy)continue; f[fy]=fx; ans+=a[i].z; cnt++; if(cnt==n-1)break; } printf("%d",ans); }
|
近期评论