P1135 64pts,前六个点MLE了
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,z;
};
queue<node>f;
int n,a,b,k[255];
int vis[255];
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++)cin>>k[i];
f.push(node{a,0});
while(!f.empty()){
if(f.front().x==b){
cout<<f.front().z;
return 0;
}else vis[f.front().x]=1;
if(f.front().x+k[f.front().x]<=n&&f.front().x+k[f.front().x]>=1&&vis[f.front().x+k[f.front().x]]==0){
f.push(node{f.front().x+k[f.front().x],f.front().z+1});
}
if(f.front().x-k[f.front().x]<=n&&f.front().x-k[f.front().x]>=1&&vis[f.front().x-k[f.front().x]]==0){
f.push(node{f.front().x-k[f.front().x],f.front().z+1});
}
f.pop();
}
cout<<-1;
return 0;
}