#include"stdio.h"
int farm[101][101],closest[101];
int i,j,n,cost;
int Prim()
{
int k,min;
cost=0;
for(i=1;i<n;i++)
{
j=0;
while(!closest[j])j++;
min=closest[j];
k=j;
for(j++;j<n;j++)
if(closest[j]&&min>closest[j])
{
min=closest[j];
k=j;
}
cost+=closest[k];
closest[k]=0;
for(j=0;j<n;j++)
if(farm[k][j]&&farm[k][j]<closest[j])
closest[j]=farm[k][j];
}
return cost;
}
main()
{
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&farm[i][j]);
closest[i]=farm[0][i];
}
printf("%d\n",Prim());
}
return 0;
}
POJ 1258Agri-Net 简单的最小生成树
最新推荐文章于 2019-08-14 10:14:43 发布