pta 07-图4 哈利·波特的考试 (25分) floyd

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,m,u,v,w,i,j,k,t,num,ans,g[128][128];
    while(~scanf("%d%d",&n,&m))
    {
        for(i=1; i<=n; i++)
            for(j=1; j<=n; j++)
                if(i==j) g[i][j]=0;
                else g[i][j]=-1;
        for(i=0; i<m; i++)
        {
            scanf("%d%d%d",&u,&v,&w);
            if(g[u][v]==-1) g[u][v]=g[v][u]=w;
            else g[u][v]=g[v][u]=min(g[u][v],w);
        }
        for(i=1; i<=n; i++)
        {
            for(k=1; k<=n; k++)
            {
                if(g[i][k]==-1) continue;
                for(j=1; j<=n; j++)
                {
                    if(g[k][j]==-1) continue;
                    if(g[i][j]==-1) g[i][j]=g[j][i]=g[i][k]+g[k][j];
                    else g[i][j]=g[j][i]=min(g[i][j],g[i][k]+g[k][j]);
                }
            }
        }
        ans=1<<30;
        num=-1;
        for(i=1; i<=n; i++)
        {
            t=0;
            for(j=1; j<=n; j++)
            {
                if(i==j) continue;
                if(g[i][j]==-1) break;
                t=max(t,g[i][j]);
            }
            if(j>n&&t<ans)
            {

                num=i;
                ans=t;
            }
        }
        if(num==-1) printf("0
");
        else printf("%d %d
",num,ans);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

原文地址:https://www.cnblogs.com/xryz/p/4847800.html