题目链接:点我
题意:求一个图中两点之间的路径上的权值最小的那个值,不能到达就是no path
Floyd
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=100+10;
int d[maxn][maxn];
int main(){int n,m,q,u,v,w;int flag=0;while(scanf("%d%d%d",&n,&m,&q)==3&&n){for(int i=0;i<n;i++){d[i][i]=0;for(int j=i+1;j<n;j++){d[i][j]=d[j][i]=INF;}}for(int i=0;i<m;i++){scanf("%d%d%d",&u,&v,&w);u--,v--;d[u][v]=min(d[u][v],w);d[v][u]=d[u][v];}for(int k=0;k<n;k++){for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(d[i][k]<INF&&d[k][j]<INF){d[i][j]=min(d[i][j],max(d[i][k],d[k][j]));}}}}if(flag){printf("\n");}printf("Case #%d\n",++flag);while(q--){scanf("%d%d",&u,&v);u--,v--;if(d[u][v]==INF){printf("no path\n");}else{printf("%d\n",d[u][v]);}}}return 0;
}