看了遍题解打的
实在找不出错了
求助
#include<bits/stdc++.h>
using namespace std;
int f[1000][1000];
void sum(int k)
{
for(int i=1;i<=k;i++)
for(int j=1;j<=k;j++)
{
if(f[i][j]>f[i][k]+f[k][j])
f[i][j]=f[j][i]=f[i][k]+f[k][j];
return;
}
}
int main()
{
int n,m;
cin>>n>>m;
int a[n];
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f[i][j]=999999999999;
}
for(int i=1;i<=n;i++)
f[i][i]=0;
int s1,s2,s3;
for(int i=1;i<=m;i++)
{
cin>>s1>>s2>>s3;
f[s1][s2]=f[s2][s1]=s3;
}
int q;
cin>>q;
int t=0;
for(int i=1;i<=q;i++)
{
cin>>s1>>s2>>s3;
while(a[t]<=s3&&t<n)
{
sum(t);
t++;
}
if(a[s1]>s3||a[s2]>s3)cout<<"-1"<<endl;
else
{
if(f[s1][s2]==999999999999)cout<<"-1"<<endl;
else
{
cout<<f[s1][s2]<<endl;
}
}
}
return 0;
}