#include<bits/stdc++.h>
using namespace std;
int n,a,b,go[201],ans;
bool vis[201];
inline void dfs(int c,int s)
{
if(s==b)
{
ans=min(ans,c);
return;
}
if(c>=ans)
return;
vis[s]=true;
if(s+go[s]<=n&&!vis[s+go[s]])
dfs(c+1,s+go[s]);
if(s-go[s]>=1&&!vis[s-go[s]])
dfs(c+1,s-go[s]);
vis[s]=false;
}
int main()
{
scanf("%d%d%d",&n,&a,&b);
for(int i=1;i<=n;++i)
scanf("%d",&go[i]);
vis[a]=true;
ans=0x7ffffff;
dfs(0,a);
if(ans==0x7ffffff)
printf("-1");else
printf("%d",ans);
return 0;
}
第一个数据点TLE了,和help!!!