#include<bits/stdc++.h> using namespace std; struct node{ int x,step; }; queueq; 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 条评论

目前还没有评论...