CSES - Shared codeLink to this code:
https://cses.fi/paste/a4aad3494668a4c8ad00e3/
#include "bits/stdc++.h"
using namespace std;
using LL = long long;
constexpr LL INF = 1e15;
int main() {
int n; cin >> n;
int m; cin >> m;
int q; cin >> q;
vector<vector<LL>> d(n, vector<LL>(n, INF));
for (int i = 0; i < n; ++i)
d[i][i] = 0;
for (int i = 0, a, b, w; i < m; ++i) {
cin >> a >> b >> w;
--a, --b;
d[a][b] = min(d[a][b], (LL)w);
d[b][a] = min(d[b][a], (LL)w);
}
for (int k = 0; k < n; ++k) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}
}
}
for (int i = 0, a, b; i < q; ++i) {
cin >> a >> b;
--a, --b;
cout << (d[a][b] == INF ? -1 : d[a][b]) << "\n";
}
}