这道题和poj2253是类似的,只要稍做修改即可。这道题求最大生成树的最小路径,那道题是求最小生成树的最大路径。所以就不多做解释咯!
代码:
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int dis[1001];
int visit[1001];
int map[1001][1001];
int n,k;
double ans;
int main()
{
int i,j,n,maxnode,t,m,bigvalue;
k=0;
cin>>t;
while(t--)
{
k++;
memset(visit,0,sizeof(visit));
memset(map,0,sizeof(map));
cin>>n>>m;
while(m--)
{
cin>>i>>j;
cin>>map[i][j];
map[j][i]=map[i][j];
}
for (i=1;i<=n;i++)
dis[i]=map[1][i];
int ans=100000000;
for(i=1;i<=n;i++)
{
bigvalue=0;
for(j=1;j<=n;j++)
{
if(!visit[j]&&dis[j]&&dis[j]>bigvalue)
{
maxnode=j;
bigvalue=dis[j];
}
}
if(ans>dis[maxnode])
ans=dis[maxnode];
visit[maxnode]=true;
if(maxnode==n) break;
for(j=1;j<=n;j++)
{
if(!visit[j]&&dis[j]<map[maxnode][j])
dis[j]=map[maxnode][j];
}
}
printf("Scenario #%d:\n%d\n\n",k,ans);
}
return 0;
}