10048Audiophobia-美题
10048Audiophobia--好题
#include<cstdlib> #include<iostream> #include<sstream> #include<cstdio> #include<cmath> #include<cstring> #include <algorithm> #include<vector> #include<set> #include<queue> #define LL long long #define inf 800000 #define E 1e-9 #define M 100 #define N 105 using namespace std; int n,m,c,s,q; int ma[N][N]; void floyd() { for(int k=1; k<=c; k++) for(int i=1; i<=c; i++) // if(i!=k) { for(int j=1; j<=c; j++) // if(j!=i&&j!=k) { if(ma[i][k]<ma[i][j]&&ma[k][j]<ma[i][j]) ma[i][j]=max(ma[i][k],ma[k][j]); } } } int main() { #ifndef ONLINE_JUDGE freopen("ex.in","r",stdin); #endif int ncase=0; while(scanf("%d%d%d",&c,&s,&q)!=EOF) { if(!c&&!s&&!q) break; if(ncase) printf("\n"); printf("Case #%d\n",++ncase); for(int i=1; i<=c; ++i) for(int j=1; j<=c; ++j) ma[i][j]=inf; int c1,c2,w; for (int i=0; i<s; i++) { scanf("%d%d%d",&c1,&c2,&w); ma[c1][c2]=ma[c2][c1]=w; } floyd(); for(int i=0;i<q;i++) { scanf("%d%d",&c1,&c2); if(ma[c1][c2]<inf) printf("%d\n",ma[c1][c2]); else printf("no path\n"); } } return 0; }