hdu 1233
#include<stdio.h> #include<algorithm> using namespace std; int father[110],N,M; struct node { int i,j,v; }T[5000]; int cmp(node a,node b) { return a.v<b.v; } int find(int x) { return x==father[x]?x:father[x]=find(father[x]); } void merge(int x,int y) { x=find(x); y=find(y); if(x!=y) father[x]=y; } int krusal( ) { int i,sum=0,a,b,c; for(i=0;i<M;i++) { a=T[i].i,b=T[i].j,c=T[i].v; if(find(a)!=find(b)) { sum+=c; merge(a,b); } } return sum; } int main( ) { int i; while(scanf("%d",&N),N) { M=N*(N-1)/2; for(i=1;i<=N;i++) father[i]=i; for(i=0;i<M;i++) scanf("%d%d%d",&T[i].i,&T[i].j,&T[i].v); sort(T,T+M,cmp); printf("%d\n",krusal()); } return 0; }
posted on 2011-04-30 11:13 more think, more gains 阅读(164) 评论(0) 编辑 收藏 举报