wyy紫衫,玄关
#include <bits/stdc++.h>
using namespace std;
int n,a,b,num[204],ans;
bool vis[205],flag;
struct node
{
int id,step;
};
queue<node> q;
void dfs()
{
while(!q.empty())
{
node now=q.front();
q.pop();
if(now.id==b)
{
flag=1;
ans=now.step;
return;
}
if(now.step+num[now.step]<=n&&!vis[now.step+num[now.step]])
{
q.push({now.step+num[now.step],now.step+1});
vis[now.step+num[now.step]]=1;
}
if(now.step-num[now.step]>=1&&!vis[now.step-num[now.step]])
{
q.push({now.step-num[now.step],now.step+1});
vis[now.step-num[now.step]]=1;
}
}
}
int main()
{
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>num[i];
q.push({a,0});
vis[a]=1;
dfs();
if(flag) cout<<ans<<endl;
else cout<<"-1"<<endl;
return 0;
}