| Time Limit: 3000MS | Memory Limit: 30000K | |
| Total Submissions: 29765 | Accepted: 7944 |
Description
Input
Output
Sample Input
1 3 3 1 2 3 1 3 4 2 3 5
Sample Output
Scenario #1: 4
Source
#include <iostream>
#include <cstdio>
using namespace std;
int n,m;
const int maxn=1005;
const int INF=0x3f3f3f3f;
int a[maxn][maxn];
bool vis[maxn];
int dis[maxn];
void Prime()
{
for(int i=1; i<=n; i++)
{
vis[i]=false;
dis[i]=a[1][i];
}
vis[1]=true;
dis[1]=0;
int ans=INF;
for(int i=2; i<=n; i++)
{
int maxx=-INF;
int p=-1;
for(int j=1; j<=n; j++)
{
if(!vis[j]&&dis[j]>maxx)
maxx=dis[p=j];
}
if(maxx<ans)
ans=maxx;
vis[p]=true;
if(p==n)
break;
for(int j=1; j<=n; j++)
{
if(!vis[j]&&dis[j]<a[p][j])
dis[j]=a[p][j];
}
}
cout<<ans<<endl<<endl;;
}
int main()
{
int T,kase=0;
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
cin>>T;
while(T--)
{
cin>>n>>m;
int x,y,z;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
if(i==j) a[i][j]=0;
else a[i][j]=-INF;
}
while(m--)
{
scanf("%d%d%d",&x,&y,&z);
if(z>a[x][y])
a[x][y]=a[y][x]=z;
}
cout<<"Scenario #"<<++kase<<":"<<endl;
Prime();
}
return 0;
}POJ 1797 Heavy Transportation 【最大生成树,Prime】
原文:http://blog.csdn.net/hurmishine/article/details/52172243