AC
```c
#include <iostream>
#include <cstring>
using namespace std;
const int maxn = 201;
int n, m, q, tim[201],vis[201] = { 0 };
int map[maxn][maxn] = { };
int main() {
cin >> n >> m;
memset(map, 0x3f, sizeof(map));
for(int i = 0; i < n; i++) {
cin >> tim[i];
}
int a, b, c;
for(int i = 0; i < m; i++) {
cin >> a >> b >> c;
map[a][b] = map[b][a] = c;
}
cin >> q;
for(int v = 0; v < q; v++) {
cin >> a >> b >> c;
for(int i = 0; i < n; i++) {
if(tim[i] <= c && !vis[i]) {
vis[i] = 1;
for(int j = 0; j < n; j++) {
for(int k = 0; k < n; k++) {
map[j][k] = min(map[j][k],map[j][i] + map[i][k]);
}
}
}
}
if(tim[a] <= c && tim[b] <= c && map[a][b] != 0x3f3f3f3f) cout << map[a][b] <<endl;
else cout << -1 <<endl;
}
return 0;
}
```
by timmyliao @ 2024-02-03 12:31:29
@[caoruiqi](/user/932094) 我也是堆优化加链式前向星 先是40分然后70分一直不知道错哪里
不过这道题朴素版n^2是不是比mlogm快一丢丢?
by Liurunyao0 @ 2024-02-04 16:09:09