求最小生成树总权值
//Memory Time
//196K 16MS
#include<stdio.h>
#define MAXCONST 2000000000
int dis[100][100];
int cost[100];
int que[100];
int main()
{
int N;
while(scanf("%d", &N) != EOF)
{
for(int j = 0; j < N; j++)
for(int k = 0; k < N; k ++)
{
scanf("%d", &dis[j][k]);
}
for(int j = 0; j < N; j++)
{
que[j] = j+1;
cost[j] = MAXCONST;
}
cost[0] = 0;
int tempSrc = 0;
int tempTotal = 0;
int tempMin;
int tempPt;
int tempDst;
for(int j = N-1; j > 0; j--)
{
tempMin = MAXCONST;
tempPt;
for(int k = 0; k < j; k++)
{
tempDst = que[k];
if(dis[tempSrc][tempDst] < cost[tempDst])
{
cost[tempDst] = dis[tempSrc][tempDst];
}
if(cost[tempDst] < tempMin)
{
tempMin = cost[tempDst];
tempPt = k;
}
}
tempSrc = que[tempPt];
que[tempPt] = que[j-1];
tempTotal += tempMin;
}
printf("%d\n", tempTotal);
}
return 0;
}