您的位置:首页 > 其它

pku 1125—Stockbroker Grapevine

2010-01-02 18:17 197 查看
/*
floyd算法
*/
#include<iostream>
#include<limits.h>
using namespace std;
#define L INT_MAX
int a[105][105],max0[105];
void floyd(int n)
{
int i,j,k;
for(k=1;k<=n;k++) //弗洛伊德算法
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(a[i][k]!=L && a[k][j]!=L && a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
}
}
int main()
{
int n,m,i,j,k,to,value;
while(cin>>n)
{
if(n==0)break;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j)a[i][j]=0;
else a[i][j]=L;
}
}
for(i=1;i<=n;i++)
{
cin>>m;
for(j=1;j<=m;j++)
{
cin>>to>>value;
a[i][to]=value;
}
}
floyd(n);
for(i=1;i<=n;i++)
{
max0[i]=0;
for(j=1;j<=n;j++)
{
if(max0[i]<a[i][j])max0[i]=a[i][j];
}
}
int min=L,ans;
for(i=1;i<=n;i++)
{
if(max0[i]<min)
{
min=max0[i];
ans=i;
}
}
if(min==L)cout<<"disjoint"<<endl;
else cout<<ans<<" "<<min<<endl;
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: