code:
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
class node
{
public:
int x, y, c;
bool operator< (const node &s) const
{
return c<s.c;
}
}tree[5005];
int n = 0, r[102], f[102];
int find(int x)
{
if(f[x] != x)
f[x] = find(f[x]);
return f[x];
}
int Kruskal()
{
int i = 0, x = 0, y = 0, c = 0, fx = 0, fy =0, sum = 0;
for(i = 0; i<n*(n-1)/2; i++)
{
x = tree[i].x;
y = tree[i].y;
c = tree[i].c;
fx = find(x), fy = find(y);
if(fx == fy) continue;
else
{
if(r[fx]<r[fy])
f[fx] = fy;
else
{
if(r[fx] == r[fy])
r[fx]++;
f[fy] = fx;
}
sum += c;
}
}
return sum;
}
int main()
{
int i = 0, a = 0, b = 0, c = 0;
while(scanf("%d", &n), n)
{
for(i = 0; i<102; i++)
{
r[i] = 0;
f[i] = i;
}
for(i = 0; i<n*(n-1)/2; i++)
{
scanf("%d %d %d", &a, &b, &c);
tree[i].x = a;
tree[i].y = b;
tree[i].c = c;
}
sort(tree, tree+i);
printf("%d\n", Kruskal());
}
return 0;
}