对着tj思路和自己的想法敲的,调了半天都没有用,求DALAO
#include<bits/stdc++.h>
using namespace std;
const int qwq = 1e6 + 10;
int a[300][300];
int t[qwq];
int n,m;
void floyd(int k) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(a[i][j] > a[i][k] + a[j][k]) {
a[i][j] = a[j][i] = a[i][k] + a[j][k];
}
}
}
return ;
}
int main() {
cin>>n>>m;
for(int i = 0; i < n; i++) {
scanf("%d",t+i);
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
a[i][j] = 1e9;
}
}
for(int i = 0; i < n; i++) {
a[i][i] = 0;
}
for(int i = 1; i <= m; i++) {
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
a[y][x] = a[x][y] = z;
}
int q;
cin>>q;
int qow = 0;
for(int i = 1; i <= q; i++) {
int x,y,sj;
scanf("%d%d%d",&x,&y,&sj);
while(t[qow] <= sj && qow < n) {
floyd(qow);
qow++;
}
if(t[x] > sj || t[y] > sj) {
cout<<-1;
} else {
if(a[x][y] == 1e9) {
cout<<-1<<endl;
} else {
cout<<a[x][y]<<endl;
}
}
}
return 0;
}