如题
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n, m, q;
int t[205];
int g[205][205];
int f[205][205];
int timer;
int cnt;
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> t[i];
}
memset(f, 0x3f, sizeof(f));
for (int i = 0; i < n; i++) {
f[i][i] = 0;
}
while (m--) {
int x, y, w;
cin >> x >> y >> w;
f[x][y] = f[y][x] = w;
}
cin >> q;
while (q--) {
int x, y, tim;
cin >> x >> y >> tim;
while (t[cnt] <= tim && cnt < n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
f[i][j] = min(f[i][j], f[i][cnt] + f[cnt][j]);
}
}
cnt++;
}
if (t[x] > tim || t[y] > tim || f[x][y] == 0x3f3f3f3f) cout << -1 << endl;
else cout << f[x][y] << endl;
}
return 0;
}