最短距离查询
2023-08-19 11:34:04
发布于:广东
#include<bits/stdc++.h>
using namespace std;
int g[205][205],n,m,q;
void floyd(){
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][k]+g[k][j],g[i][j]);
}
}
}
}
int main(){
memset(g,0x3f,sizeof g);
for(int i=1;i<=n;i++) g[i][i]=0;
cin>>n>>m>>q;
for(int i=0;i<m;i++){
int a,b,c;
cin>>a>>b>>c;
g[a][b]=c;
}
floyd();
while(q--){
int a,b;
cin>>a>>b;
if(g[a][b]==0x3f3f3f3f) cout<<"impossible"<<endl;
else cout<<g[a][b]<<endl;
}
}
这里空空如也
有帮助,赞一个