#include<bits/stdc++.h>
using namespace std;
const int inf=1e9;
int n,m,dis[220][220],t[220],Q;
int main(){
scanf("%d%d",&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++)
if(i!=j)
dis[i][j]=inf;
int x,y,z;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
dis[x][y]=dis[y][x]=z;
}
scanf("%d",&Q);
while(Q--){
scanf("%d%d%d",&x,&y,&z);
for(int k=0;k<n&&t[k]<=z;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(dis[i][j]>dis[i][k]+dis[k][j])
dis[i][j]=dis[i][k]+dis[k][j];
if(dis[x][y]==inf||t[x]>z||t[y]>z)
puts("-1");
else
printf("%d\n",dis[x][y]);
}
return 0;
}
调了45次了,不知道哪里有问题,求求了