题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1641
解:floyd裸题。。。
程序:
#include<iostream> #include<cstdio> #include<cstring> #define INF 2100000000 using namespace std; int n,m,t,f[500][500]; int main() { scanf("%d%d%d",&n,&m,&t); for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (i!=j) f[i][j]=INF; int s,e,h; for (int i=1;i<=m;i++) { scanf("%d%d%d",&s,&e,&h); f[s][e]=min(f[s][e],h); } int x,y; for (int k=1;k<=n;k++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if ((i!=j)&&(j!=k)) f[i][j]=min(f[i][j],max(f[i][k],f[k][j])); for (int i=1;i<=t;i++) { scanf("%d%d",&x,&y); if (f[x][y]!=INF) printf("%d ",f[x][y]); else printf("-1 "); } return 0; }