#include <stdio.h>
#include <iostream>
using namespace std;
const int MaxNum = 9999999999;
int Edge[501][501];
int lowcost[501];
int nearvex[501];
int vertexNum;
int prim()
{
int i,j,k,min,v;
int ans = -1;
memset(nearvex,0,sizeof(nearvex));
nearvex[1] =1 ;
for (i=1;i<=vertexNum;i++)
lowcost[i] = Edge[1][i];
for (i=1;i<vertexNum;i++)
{
min = 9999999999;
for (j=1;j<=vertexNum;j++)
if (!nearvex[j] && lowcost[j]<min)
{
v = j;
min = lowcost[j];
}
if(ans < min)
ans = min;
if (!nearvex[v]) nearvex[v] = 1;
for (k=1;k<=vertexNum;k++)
if (!nearvex[k] && lowcost[k]>Edge[v][k])
lowcost[k] = Edge[v][k];
}
return ans;
}
void Test()
{
scanf("%d",&vertexNum);
for(int i = 1; i <= vertexNum; ++i)
{
for(int j = 1; j <= vertexNum; ++j)
{
scanf("%d",&Edge[i][j]);
}
}
printf("%d\n",prim());
}
int main()
{
Test();
return 0;
}
SeedCoder2014热身题目2:解答
最新推荐文章于 2018-07-09 22:46:52 发布