#include <iostream> //#include <fstream> #include <queue> #include <algorithm> using namespace std; const int MAXN=100; struct Edge { int point1,point2,weight; Edge(int p1,int p2,int w):point1(p1),point2(p2),weight(w){}; Edge(){}; }; bool cmp(const Edge & e1,const Edge & e2) { return e1.weight<e2.weight; } int _rank[MAXN]; int father[MAXN]; void intialize(int n) { for(int i=0;i<n;++i) { father[i]=i; _rank[i]=1; } } int find(int x) { if(x==father[x]) return x; return father[x]=find(father[x]); } void _union(int x,int y) { x=find(x); y=find(y); if(_rank[x]<_rank[y]) father[x]=y; else if(_rank[y]<_rank[x]) father[y]=x; else { father[x]=y; ++_rank[y]; } } int main() { int n,numE,ans; while(cin>>n) { if(n==0) break; ans=0; numE=n*(n-1)/2; Edge edge[numE]; intialize(n); for(int i=0;i<numE;++i) { int tp1,tp2,tw; cin>>tp1>>tp2>>tw; edge[i]=Edge(tp1-1,tp2-1,tw); } sort(edge,edge+numE,cmp); for(int i=0;i<numE;++i) { Edge tedge=edge[i]; if(find(tedge.point1)!=find(tedge.point2)) { ans+=tedge.weight; _union(tedge.point1,tedge.point2); } } cout<<ans<<endl; } } // 64 位输出请用 printf("%lld")