using namespace std;
struct node{
	int x,step;
};
queue<node>q;
int vis[201];
int n,a,b;
int k[201];
void bfs(){
	node na={a,0};
	vis[a]=1;
	q.push(na);
	while(!q.empty()){
		node f=q.front();
		if(f.x==b){
			cout<<f.step;
			return;
		}
		int n1=f.x+k[f.x];
		if(n1>0&&n1<=n&&vis[n1]==0){
			node r1={n1,f.step+1};
			q.push(r1);
		}
		int n2=f.xk[f.x];
		if(n2>0&&n2<=n&&vis[n2]==0){
			node r2={n2,f.step+1};
			q.push(r2);
		}
		q.pop();
	}
	cout << -1;
}
int main(){
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++){
    	cin>>k[i];
	}
	bfs();
    return 0;
}

0 条评论

目前还没有评论...