#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace STD;structd{intU,v,w;} e[10000+5];intbin[ -],n,m;BOOLCMP (d a,d b) {returnA.W<B.W;}intFind (intx) {intS for(s=x;bin[s]>=0; s=bin[s]); while(s!=x) {intT=BIN[X]; Bin[x]=s; x=t; }returns;}voidUnion (intX1,intX2) {intF1=find (x1), F2=find (x2);intT=BIN[F1]+BIN[F2];if(Bin[f1]>bin[f2]) {bin[f1]=f2; bin[f2]=t; }Else{bin[f2]=f1; bin[f1]=t; }}intMain () {intAns,i,j,k,num,u,v; while(~scanf("%d", &n) &&n) {scanf("%d", &m); for(i=0; i<m;i++) {scanf("%d%d%d", &E[I].U,&E[I].V,&E[I].W); } for(i=0; i<=n;i++) bin[i]=-1; Sort (e,e+m,cmp); for(i=0, ans=0, num=0; i<m;i++) {u=e[i].u; V=E[I].V;if(Find (U)!=find (v)) {num++; Union (U,V); ANS+=E[I].W; }if(num>=n-1) Break; }printf("%d\n", ans); }return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
POJ 1287 Networking