#include <stdio.h> int getShortLenght(int graph[100][100],int n) { int sum=0; int set[100]; for(int i=1;i<n;i++) { set[i]=0; } int low[100]; set[1]=1; for(int i=1;i<n;i++) { if(i!=1) { low[i]=graph[1][i]; } } for(int i=1;i<n;i++) { int min=0,minp=0; for(int j=1;j<n;j++) { if(min!=0) { if(min>low[j]&&set[j]==0) { min=low[j]; minp=j; } } else if(min==0) { if(set[j]==0) { min=low[j]; minp=j; } } } sum+=min; set[minp]=1; for(int i=1;i<n;i++) { if(set[i]==0&&low[i]>graph[minp][i]) { low[i]=graph[minp][i]; } } } printf("%d\n",sum); return 1; } int main() { while(1) { int N=0; scanf("%d",&N); if(N==0) { break; } int graph[100][100]; for(int i=0;i<N*(N-1)/2;i++) { int v1,v2; scanf("%d",&v1); scanf("%d",&v2); scanf("%d",&graph[v1][v2]); graph[v2][v1]=graph[v1][v2]; } getShortLenght(graph,N+1); } } /************************************************************** Problem: 2188 User: admin Language: C Result: Accepted Time:15 ms Memory:1144 kb ****************************************************************/