#include<bits/stdc++.h>
#include<iostream>
#include<queue>
using namespace std;
int n,a,b,x;
int f[205];//楼层的数字
bool w[205];//是否到达
int ans[205];//到达当前楼层的次数
int main(){
cin >> n >> a >> b;
if(a == b){//相等直接输出0
cout << 0;
return 0;
}
memset(w,false,sizeof(w));//初始化
int i;
for(i = 1; i <= n; ++i)cin >> f[i];//读入数字
queue<int>q;
q.push(a);//起始楼层入队
w[a] = true;//改变状态
while(!q.empty()){
x = q.front();
if(x + f[x] <= b){//能否向上
if(!w[x+f[x]]){//未到达该楼层
ans[x+f[x]] = ans[x] + 1;//计数
w[x+f[x]] = true;//改变状态
if(x+f[x] == b){//到达目的楼层,输出
cout << ans[x+f[x]];
return 0;
}
else{
q.push(x+f[x]);//入队
}
}
}
if(x - f[x] >= 1){
if(!w[x-f[x]]){
ans[x-f[x]] = ans[x] + 1;
w[x-f[x]] = true;
if(x - f[x] == b){
cout << ans[x - f[x]];
return 0;
}
else{
q.push(x-f[x]);
}
}
}
q.pop();
}
//遍历整个能去的楼层都没有目的楼层,输出-1
cout << -1;
return 0;
}
07-11
08-26