pta 07-図4ハリー・ポッターの試験(25点)floyd


#include
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; iscanf("%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&&tif(num==-1) printf("0
"
); else printf("%d %d
"
,num,ans); } return 0; }