#include<stdio.h>
#include<algorithm>
using namespace std;
int pre[10000],sum;
struct road
{
int star;
int end;
int cost;
}r[10000];
void make_set()
{/*创建一个单元集*/
for(int i=0;i<10000;i++)
pre[i]=i;
}
int cmp(road a,road b)
{
return a.cost<b.cost;
}
int find(int x)
{
while(x!=pre[x])
x=pre[x];
return x;
}
void union_set(int x,int y,int k)
{
int a=find(x);
int b=find(y);
if(a!=b)
{
pre[a]=b;
sum+=k;
}
}
int main()
{
int i,j,m,n;
while(scanf("%d",&n)&&n>0)
{
make_set();
sum=0;m=n*(n-1)/2;
for(i=1;i<=m;i++)
scanf("%d%d%d",&r[i].star,&r[i].end,&r[i].cost);
sort(r+1,r+m+1,cmp);
for(i=1;i<=m;i++)
union_set(r[i].star,r[i].end,r[i].cost);
printf("%d\n",sum);
}
return 0;
}
点击打开链接