#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[205];
bool fb[205];
void bfs(int s){
int q[40005][2],head=0,tail=0;
tail++;
q[tail][0]=s;
q[tail][1]=0;
while(head<tail){
head++;
int f=q[head][0];
int step=q[head][1];
for(int i=0;i<2;i++){
int nf=f+k[f];
if(i==0) nf=f+k[f];
if(i==1) nf=f-k[f];
if(nf>0&&nf<=n&&fb[nf]==0){
fb[nf]=1;
tail++;
q[tail][0]=nf;
q[tail][1]=step+1;
if(nf==b){
cout<<q[tail][1];
return;
}
}
}
}
cout<<"-1";
}
int main(){
memset(fb,0,sizeof(fb));
cin>>n>>a>>b;
if(a==b){
cout<<"0";
return 0;
}
for(int i=1;i<=n;i++) cin>>k[i];
bfs(a);
return 0;
}
洛谷:P1135 奇怪的电梯 | 广搜bfs
最新推荐文章于 2024-11-05 08:27:22 发布