A29680.最短距离查询【Floyd】
2024-12-08 11:19:31
发布于:北京
28阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n, m, k, a, b, c, dis[3505][3505],x,y,z;
int main(){
cin >> n >> m >> k;
memset(dis,0x3f,sizeof dis);
while(m--){
cin >> x >> y >> z;
dis[x][y] = z;
}
for(int k = 1;k <= n;k++){
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
dis[i][j] = min(dis[i][j],dis[i][k] + dis[k][j]);
}
}
}
for(int i = 1;i <= k;i++){
cin >> a >> b;
if(dis[a][b] == 0x3f3f3f3f) cout << "impossible" << '\n';
else cout << dis[a][b] << '\n';
}
return 0;
}
这里空空如也
有帮助,赞一个