AcWing 854. Floyd求最短路
原题链接
简单
作者:
梦都会空
,
2021-12-06 18:12:41
,
所有人可见
,
阅读 164
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 210;
int n,m,q;
int d[N][N];
void boonm()
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
signed main()
{
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if(i==j) d[i][j]=0;
else d[i][j]=0x3f3f3f3;
}
while(m--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
d[a][b]=min(d[a][b],c);
}
boonm();
while(q--)
{
int a,b;
scanf("%d%d",&a,&b);
if(d[a][b] >= 0x3f3f) puts("impossible");//注意大于多少。。。。。。。。。。
else printf("%d\n",d[a][b]);
}
return 0;
}