模版题,水过,用prim算法 AC,多熟悉算法的程序写法~ 当作练手
qwertyxk | 1258 | Accepted | 432K | 16MS | GCC | 667B | 2012-12-20 20:11:49 |
#include<stdio.h>
#define MAX 999999
int farms[105][105],N,lowCost[105];
int prim()
{
int result=0,i,j,k,minCost;
lowCost[1]=-1;
for(i=2;i<=N;i++)
lowCost[i]=farms[1][i];
for(i=2;i<=N;i++)
{
minCost=MAX;
for(j=2;j<=N;j++)
{
if(lowCost[j]>0&&lowCost[j]<minCost)
{
minCost=lowCost[j];
k=j;
}
}
lowCost[k]=-1;
result+=minCost;
for(j=2;j<=N;j++)
lowCost[j]=farms[k][j]<lowCost[j]?farms[k][j]:lowCost[j];
}
return result;
}
int main()
{
while(scanf("%d",&N)!=EOF)
{
int i,j;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
scanf("%d",&farms[i][j]);
printf("%d\n", prim());
}
return 0;
}