HDU oj1233:
3 1 2 1 1 3 2 2 3 4 4 1 2 1 1 3 4 1 4 1 2 3 3 2 4 2 3 4 5 0
#include <cstdio> #include <algorithm> using namespace std; struct node{ int x,y,z; bool operator<(const node &q)const{ return z<q.z; } }a[5000]; int n,p[101],ans; int fid(int x) { return p[x]==x?x:fid(p[x]); } void join(int x,int y,int c) { int f1=fid(x); int f2=fid(y); if(f1!=f2) { ans+=a[c].z; p[f1]=f2; } } int main() { while(scanf("%d",&n)!=EOF&&n) { ans=0; for(int i=1;i<=n;i++) p[i]=i; int m=n*(n-1)/2; for(int i=0;i<m;i++) scanf("%d %d %d",&a[i].x,&a[i].y,&a[i].z); sort(a,a+m); for(int i=0;i<m;i++) join(a[i].x,a[i].y,i); printf("%d\n",ans); } return 0; }