#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1000, INF = 10000010;
int n, m, k; int d[N][N]; int Q;
void floyd()
{
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]);
}
}
int main()
{
cin >> n>>m;
for(int i = 1;i<=n;i++)
for (int j = 1; j <= n; j++)
{
if (j == i)d[i][j] = 0;
else d[i][j] = INF;
}
while (m--)
{
int a, b, w;
cin >> a >> b >> w;
d[a][b] = min(d[a][b], w);
}
floyd();
while (Q--)
{
int a, b;
cin >> a >> b;
cout<< d[a][b];
}
}
Flord算法
最新推荐文章于 2024-07-19 19:11:19 发布