怎么判断能不能到啊,求助
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int ans[250];//下标:楼层,至少按几次按钮
int que[250];//队列,下标:序列
int l,r;//指向队列起点、终点的指针
int shuzi[250];// 每个电梯的数字
int main(){
cin>>n>>a>>b;
memset(ans,127,sizeof(ans));//都无法到达
for(int i=1;i<=n;i++){
cin>>shuzi[i];
}
ans[a]=0;//起点至少按0次按钮
l=1;
que[l]=a;//将a点入队
r=2;//准备存入扩散点
while(l<r){
int x=que[l];//扩散点
int y=x+shuzi[x] ;
int z=x-shuzi[x];
if(y<=n){
if(ans[y]>ans[x]+1){
ans[y]=ans[x]+1;
que[r]=y;//目标点入队列
r++;//终点指针+1
}
}
if(z>0){
if(ans[z]>ans[x]+1){
ans[z]=ans[x]+1;
que[r]=z;//目标点入队列
r++;//终点指针+1
}
}
l++;//x已经被用过了 x出队列
}
if(ans[b]!=0) cout<<ans[b];
else cout<<"-1";
return 0;
}