代码:
#include<bits/stdc++.h>
using namespace std;
const int N=2e2+5;
inline int read()
{
int s=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
return s*w;
}
int n,i,b,sum,ans=0x7fffffff;
int a[N];bool vis [N];
inline void input(){n=read(),i=read(),b=read();for(int i=1;i<=n;i++) a[i]=read();}
inline void output(){if(ans!=0x7fffffff) printf("%d",ans);else printf("-1");return ;}
inline void dfs(int i,int sum)
{
vis[i]=true;
if(i==b)
{
ans=sum;
return ;
}
if(sum>=ans) return ;
if(i+a[i]<=n&&!vis[i+a[i]])
{
dfs(i+a[i],sum+1);
}
if(i-a[i]>=1&&!vis[i-a[i]])
{
dfs(i-a[i],sum+1);
}
vis[i]=false;sum--;
}
int main()
{
input();
dfs(i,sum);
output();
return 0;
}
救命!qwq
题外话:验证码AC33祭