Code: (输出全 -1 )
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const LL N=201,inf=2147483647;
LL n,m,q,x,y,w,t[N],mp[N][N],cnt;
bool v[N];
LL read()
{
LL ret=0;
char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9'){ret=ret*10+(ch-48);ch=getchar();}
return ret;
}
void update(int k)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(mp[i][j]>mp[i][k]+mp[k][j]) mp[i][j]=mp[j][i]=mp[i][k]+mp[k][j];
}
}
}
int main()
{
n=read();m=read();
for(LL i=1;i<=n;i++) t[i]=read();
for(LL i=1;i<=n;i++)
{
for(LL j=1;j<=n;j++)
{
if(i!=j) mp[i][j]=inf;
else mp[i][i]=0;
}
}
for(LL i=1;i<=m;i++)
{
x=read();y=read();w=read();
mp[x][y]=mp[y][x]=w;
}
q=read();
while(q--)
{
x=read();y=read();w=read();cnt=0;
while(t[cnt]<=w&&cnt<n){update(cnt);cnt++;}
if(t[x]>w||t[y]>w) printf("-1\n");
else
{
if(mp[x][y]=inf) printf("-1\n");
else printf("%d\n",mp[x][y]);
}
}
return 0;
}