标签:
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 28592 | Accepted: 13037 |
Description
Input
Output
Sample Input
1 3 0 990 692 990 0 179 692 179 0
Sample Output
692
Hint
Source
原题链接:http://poj.org/problem?id=2485
题意:求最小生成树的最大边。
还是最小生成树,Prime算法和Kruskal算法都可以,但这题输入的是邻接矩阵,Prime算法好一点。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int INF=0x3f3f3f3f;
int a[505][505];
int dis[505];
bool vis[505];
int n;
int Prime()
{
for(int i=0;i<n;i++)
{
vis[i]=false;
dis[i]=a[0][i];
}
vis[0]=true;
dis[0]=0;
int ans=0;
for(int i=1;i<n;i++)
{
int p=-1;
int minn=INF;
for(int j=0;j<n;j++)
{
if(!vis[j]&&dis[j]<minn)
minn=dis[p=j];
}
vis[p]=true;
if(minn>ans)
ans=minn;
for(int j=0;j<n;j++)
{
if(!vis[j]&&dis[j]>a[p][j])
dis[j]=a[p][j];
}
}
return ans;
}
int main()
{
int T;
cin>>T;
while(T--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
printf("%d\n",Prime());
}
}
POJ 2485 Highways【最小生成树最大边,Prime算法】
标签:
原文地址:http://blog.csdn.net/hurmishine/article/details/52152170