您的位置:首页 > 其它

poj 2485 Highways 最小生成树

2012-11-13 20:15 316 查看
题目连接:http://poj.org/problem?id=2485

题意比较明显。。。就是求最小生成树里的最长路,其实用dijks也可以。。。

View Code

#include <iostream>
#include <stdio.h>
#define max 65536;
using namespace std;

int map[505][505];
int ans;
void init(int n)
{
int i,j;
for(i = 1;i <= n;i++)
{
for(j = 1;j <= n;j++)
{
map[i][j] = max;
}
}
}
int prim(int n)
{
int vis[505] = {0},i,j,k,pre,min;
int d[505];
ans = -1;
for(i = 2;i <= n;i++)
{
d[i] = map[1][i];
}

pre = 1;
vis[pre] = 1;

for(i = 1;i < n;i++)
{
min = max;
for(j = 2;j <= n;j++)
{
if(min > d[j] && !vis[j])
min = d[j],pre = j;
}

if(ans < min)ans = min;
vis[pre] = 1;
for(j = 2;j <= n;j++)
if(d[j] > map[pre][j] && !vis[j])
d[j] = map[pre][j];
}
return ans;
}
int main()
{
int t,n,i,j,w;
cin>>t;
while(t--)
{
cin>>n;
init(n);
for(i = 1;i <= n;i++)
{
for(j = 1;j <= n;j ++)
{
cin>>map[i][j];
}
}

cout<<prim(n)<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: