RT
样例过了,但是除了AC点全部RE
#include<iostream>
using namespace std;
int n,d[114514],A,B;
struct dt{
int v;
int cnt;
}Q[114514],start,finish;
int dx[]={-1,1};
bool used[114514];
int expand(){
int cl=1,op=1;//cl是当前处理结点 ,op是新结点
Q[1]=start;
if(start.v==finish.v) return 0;
for(;cl<=op;cl++){
for(int i=0;i<=1;i++){
Q[++op].v=Q[cl].v+d[Q[cl].v]*dx[i];
Q[op].cnt=Q[cl].cnt+1;
if(Q[op].v<1||Q[op].v>n) continue;
if(used[Q[op].v]) op--;
else{
used[Q[op].v]=1;
}
if(Q[op].v==finish.v) return op;
}
}
return -1;
}
int main(){
cin>>n>>A>>B;
start.v=A;
finish.v=B;
for(int i=1;i<=n;i++){
cin>>d[i];
}
int a=expand();
if(a==-1){
cout<<"-1";
return 0;
}
cout<<Q[a].cnt;
return 0;
}