UVA10048-Audiophobia

题目链接:https://odzkskevi.qnssl.com/9d40f7d26b050f73bdbcd8167ba8c0bb?v=1534353082

#include<iostream>
#include<cstdio>
using namespace std;

int n,m,t;
int d[105][105];
const int inf=10000001;

void floyd(){
    for(int k=1;k<=n;k++){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                d[i][j]=min(d[i][j],max(d[i][k],d[k][j]));
            }
        }
    }
}

int main(){
   int cnt=0;
   while(~scanf("%d%d%d",&n,&m,&t)){
        if(!n&&!m&&!t)
            break;
        if(cnt>0)
            printf("\n");
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i==j)
                    d[i][j]=0;
                else
                    d[i][j]=inf;
            }
        }
        int a,b,c;
        for(int i=0;i<m;i++){
            scanf("%d%d%d",&a,&b,&c);
            d[a][b]=d[b][a]=c;
        }
        printf("Case #%d\n",++cnt);
        floyd();
        int p,q;
        for(int i=1;i<=t;i++){
            scanf("%d%d",&p,&q);
            if(d[p][q]<inf)
                printf("%d\n",d[p][q]);
            else
                printf("no path\n");
        }
   }
return 0;
}

猜你喜欢

转载自blog.csdn.net/yimo_180227/article/details/81782886