#include <cstdio>
using namespace std;
int n,a,b,nn[205],ans;
int mm=0x7fffffff;
bool mp[205];
int min(int a,int b){return a>b?b:a;}
void dfs(int nc,int cs){//nc当前层数,cs当前按得次数
if(nc==b){mm=min(cs,mm);return;}
else if(cs<=mm){
mp[nc]=true;
if(nc+nn[nc]<=n&&!mp[nc+nn[nc]])dfs(nc+nn[nc],cs+1);
if(nc-nn[nc]>=1&&!mp[nc-nn[nc]])dfs(nc-nn[nc],cs+1);
mp[nc]=false;
}
return;
}
int main(){
scanf("%d%d%d",&n,&a,&b);
//printf("%d%d%d",n,a,b);
for(int i=1;i<=n;i++)scanf("%d",&nn[i]);
//for(int i=1;i<=n;i++)printf("%d ",nn[i]);
dfs(a,0);
if(mm!=0x7fffffff)
printf("%d",mm);
else
printf("-1");
return 0;
}
P1135 奇怪的电梯
2019-05-10