输出除了-1就是0.感觉是初始化的问题,dalao求助。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 205;
int n,m,q,t[maxn],l[maxn][maxn];
int main(){
cin>>n>>m;
for(int i = 0;i<n;i++){
cin>>t[i];
}
memset(l,1e9,sizeof l);
for(int i = 0;i<n;i++)l[i][i] = 0;
for(int i = 1,x,y,z;i<=m;i++){
cin>>x>>y>>z;
l[x][y] = l[y][x] = z;
}
cin>>q;
for(int i = 1,x,y,ti;i<=q;i++){
cin>>x>>y>>ti;
if(t[x]>ti||t[y]>ti){
cout<<-1<<endl;
continue;
}
for(int j = 0;t[j]<=ti&&j<n;j++){
for(int x = 0;x<n;x++){
for(int y = 0;y<n;y++){
l[y][x] = l[x][y] = min(l[x][y],l[x][j]+l[j][y]);
}
}
}
if(l[x][y]==1e9)cout<<-1<<endl;
else{
cout<<l[x][y]<<endl;
}
}
return 0;
}