Stockbroker Grapevine POJ - 1125(Floyd)

传送门

Floyd算法模板

附上代码:


#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

const int maxn=0x3f3f3f3f;

int n;
int map[110][110];

int main()
{
    while(scanf("%d",&n)&&n){
        memset(map,maxn,sizeof(map));
        for(int i=1;i<=n;i++){
            map[i][i]=0;
        }
        int m;
        int v,t;
        int ans=0;
        for(int i=1;i<=n;i++){
            scanf("%d",&m);
            for(int j=1;j<=m;j++){
                scanf("%d%d",&v,&t);
                map[i][v]=t;
            }
        }
        for(int k=1;k<=n;k++){
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
                }
            }
        }
        int minn=maxn;
        for(int i=1;i<=n;i++){
            ans=0;
            for(int j=1;j<=n;j++){
                ans=max(ans,map[i][j]);
            }
            if(ans<minn){
                t=i;
                minn=ans;
            }
        }
        if(maxn==minn){
            printf("disjoint\n");
        }else{
            printf("%d %d\n",t,minn);
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zhouzi2018/article/details/81566674
今日推荐