Sicily1090 && POJ2485(最小生成树)

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <list>
#include <stack>
#include <algorithm>
using namespace std;



int main()
{
  const int max=100000000;
  int T;
  scanf("%d",&T);
  while (T--)
  {
    int n;
    scanf("%d",&n);
    int i,j,A[500][500];
    int d[500];
    bool record[500]={false};
    for (i=0;i<=n-1;i++)
        for (j=0;j<=n-1;j++)
            scanf("%d",&A[i][j]);
    for (i=0;i<=n-1;i++)
        d[i]=max;
    int min;
    int pos;
    int ans=0;
    d[0]=0;
    for (i=0;i<=n-1;i++)
    {
        min=max;
        for (j=0;j<=n-1;j++)
            if (!record[j] && d[j]<min)
            {
                pos=j;
                min=d[pos];
            }
        if (min==max)
            continue;
        record[pos]=1;
        for (j=0;j<=n-1;j++)
            if (!record[j] && A[pos][j]<d[j])
                d[j]=A[pos][j];
    }
    int maxn=0;
    for (i=0;i<=n-1;i++)
        if (d[i]!=max && d[i]>maxn)
            maxn=d[i];
    if (T!=0)
      printf("%d\n\n",maxn);
    else
      printf("%d\n",maxn);
  }

  return 0;
}

你可能感兴趣的:(Sicily1090 && POJ2485(最小生成树))