#include<iostream> #include<vector> usingnamespace std; voidFloyd(vector<vector<longlong>> &graph) { int n = graph.size() - 1; for (int k = 1; k <= n; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (graph[i][j] > graph[i][k] + graph[k][j]) { graph[i][j] = graph[i][k] + graph[k][j]; } } } } } intmain() { int n, m; cin >> n >> m; vector<vector<longlong>> graph(n + 1, vector<longlong>(n + 1, 1e12)); for (int i = 1; i <= n; i++) { graph[i][i] = 0; } for (int i = 0; i < m; i++) { int u, v, w; cin >> u >> v >> w; if (w < graph[u][v]) { graph[u][v] = w; } }
Floyd(graph);
int q; cin >> q; while (q--) { int u, v; cin >> u >> v; if (graph[u][v] == 1e12) { cout << "-1\n"; } else { cout << graph[u][v] << endl; } }