Link 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";
	}
}