本题用得floyed,但只过了样例,提交全wa,实在是调不出来了,麻烦大佬们给看一下,谢谢
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,a[220],d[121][113],d2[131][131],q,ji=1;
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{scanf("%d",&a[i]);
}
memset(d,0x7f,sizeof(d));
for(int i=0;i<n;i++)
d[i][i]=0;
for(int i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
d[x][y]=z;
d[y][x]=z;
}
scanf("%d",&q);
for(int i=1;i<=q;i++)
{ int a1,b,c;
scanf("%d%d%d",&a1,&b,&c);
while(a[ji]<=c)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(d[i][j]>d[i][ji]+d[ji][j])
d[i][j]=d[j][i]=d[i][ji]+d[ji][j];
ji++;
if(ji>=n) break;
}
if(a[a1]<=c&&a[b]<=c&&d[a1][b]!=0x7f7f7f7f)
printf("%d\n",d[a1][b]);
else printf("-1\n");
}
return 0;
}