Floyd求多源最短路
作者:
由比滨结衣
,
2021-04-15 10:27:08
,
所有人可见
,
阅读 414
连接
#include <iostream>
#include <vector>
#include <cstring>
#include <queue>
using namespace std;
const int N = 210;
int g[N][N];
int main(){
memset(g, 0x3f, sizeof g);
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
for(int i = 0; i < m; i++){
int a, b, w;
scanf("%d%d%d", &a, &b, &w);
g[a][b] = min(g[a][b], w);
}
for(int k = 1; k <= n; k++){
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
}
}
}
while(k--){
int a, b;
scanf("%d%d", &a, &b);
if(g[a][b] == 0x3f3f3f3f) puts("impossible");
else printf("%d\n", g[a][b]);
}
return 0;
}