#include<stdio.h> #define MAX 999999 int main(){ int n,m,k; int s[100][100]; //邻接矩阵 int a,b,c; while(scanf("%d %d %d",&n,&m,&k)!=EOF) { //n个点,m个边,佛洛依德算法 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ //邻接矩阵赋值 if(i==j) s[i][j]=0; else s[i][j]=MAX; } for(int i=1;i<=m;i++){ scanf("%d %d %d",&a,&b,&c); s[a][b]=c; s[b][a]=c; } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(s[i][j]>s[i][k]+s[k][j]) s[i][j]=s[i][k]+s[k][j]; for(int i=1;i<=k;i++){ scanf("%d %d",&a,&b); printf("%d\n",s[a][b]); } } } |
Double click to view unformatted code.