这题我开o2能AC,但是不开o2就会WA是什么原因。 附上代码
#include<bits/stdc++.h>
using namespace std;
int e[205][205],n,m,ti[205],i,j,w,q,ans[50005],k;
inline void floyd(){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
e[i][j]=min(e[i][j],e[i][k]+e[k][j]);
}
int main(){
memset(e,63,sizeof(e));
cin>>n>>m;
for(int u=0;u<n;u++) e[u][u]=0;
for(int u=0;u<n;u++) cin>>ti[u];
for(int u=0;u<m;u++){
cin>>i>>j>>w;
e[i][j]=w;
e[j][i]=w;
}
cin>>q;
for(int u=0;u<q;u++){
int x,y,t;
cin>>x>>y>>t;
while(t>=ti[k]){
floyd();
k++;
}
if(t<ti[x]||t<ti[y]||e[x][y]>=1000000000) ans[u]=-1;
else ans[u]=e[x][y];
}
for(int u=0;u<q;u++) cout<<ans[u]<<endl;
}