模板题目:不多说。
#include<stdio.h>
#include<string.h>
int n,tn;
int map[110][110];
int lowcost[110];
int prim()
{
int i,j,z;
int yes,min,sum=0;
int vis[110];
memset(vis,0,sizeof(vis));
memset(lowcost,0,sizeof(lowcost));
for(i=1;i<=n;i++) lowcost[i]=map[1][i];
vis[1]=1;
for(;;)
{
yes=1;
min=1000000;
for(j=1;j<=n;j++)
{
if(!vis[j] && lowcost[j]<min)
{
min=lowcost[j];
yes=-1;
z=j;
}
}
if(yes==1) break;
sum+=min;
vis[z]=1;
for(j=1;j<=n;j++)
if(!vis[j] && lowcost[j]>map[z][j])
lowcost[j]=map[z][j];
}
return sum;
}
int main()
{
int i;
int x,y,z;
while(scanf("%d",&n)!=EOF,n)
{
tn=n*(n-1)/2;
memset(map,0,sizeof(map));
for(i=1;i<=tn;i++)
{
scanf("%d%d%d",&x,&y,&z);
map[x][y]=z;
map[y][x]=z;
}
printf("%d\n",prim());
}
return 0;
}