#include <bits/stdc++.h>
using namespace std;
#define MAX 1e9+10
typedef long long ll;
int main() {
int N, M, Q;
cin >> N >> M >> Q;
vector < vector<ll> > D(N, vector < ll > (N, MAX));
for( int i = 0; i < N; i++)
D[i][i] = 0;
for( int i = 0; i < M; i++){
int x, y;
ll z;
cin >> x >> y >> z;
D[y - 1][x - 1] = D[x - 1][y - 1] = min(z, D[x - 1][y - 1]);
}
for(int k=0; k < N; k++)
for(int i=0; i < N; i++)
for(int j=0; j < N; j++)
D[j][i] = D[i][j] = min(D[i][k] + D[k][j], D[i][j]);
vector< pair<int, int> >q(Q);
for( int i = 0; i < Q; i++){
int x, y;
cin >> x >> y;
q[i].first = x - 1;
q[i].second = y - 1;
}
for( int i = 0; i < Q; i++){
if(D[q[i].first][q[i].second] == MAX)
cout << -1 << endl;
else
cout << D[q[i].first][q[i].second] << endl;
}
return 0;
}
蓝桥杯 蓝桥公园 Floyd算法
最新推荐文章于 2024-06-13 19:47:49 发布