SeedCoder2014热身题目2:解答

来源:互联网 发布:国内域名使用 编辑:程序博客网 时间:2024/05/16 06:42
#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;}

0 0