#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int n,m,q;
int cnt,f[50100];
int p[3000][3000];
int a,b,c;
struct bal{
bool zt;
int ti;
}t[50100];
int re() {
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int main()
{
cin>>n>>m;
memset(p,0x3f,sizeof(p));
for(int i=0;i<n;i++)
cin>>t[i].ti;
for(int i=0;i<m;i++){
a=re();b=re();c=re();
p[a][b]=min(p[a][b],c);
p[b][a]=min(p[a][b],c);
p[i][i]=0;
}
q=re();
for(int k=1;k<=q;k++){
a=re();b=re();c=re();
for(int i=0;i<n;i++){
if(t[i].ti<=c){
for(int j=0;j<n;j++)
for(int o=0;o<n;o++)
p[j][o]=min(p[j][i]+p[i][o],p[j][o]);
}
else break;
}
if(t[a].ti>c||t[b].ti>c||p[a][b]==0x3f3f3f3f)
cout<<"-1"<<endl;
else
cout<<p[a][b]<<endl;
}
return 0;
}
为什moRE了,求大佬看一下