52分代码(乱取名的变量):
#include<bits/stdc++.h>
using namespace std;
int lift[205],last_floor=1024;
int walk,pd[205];
void run(int start,int last,int times){
walk=lift[start];
pd[start]=1;
if(walk==0) return;
if(start+walk==last){
if(last_floor>times) last_floor=times;return;
}
if(start-walk==last){
if(last_floor>times) last_floor=times;return;
}
if(lift[start+walk]!=-1&&pd[start+walk]==0){
run(start+walk,last,times+1);
}
if(lift[start-walk]!=-1&&pd[start-walk]==0){
run(start-walk,last,times+1);
}
}
int main(){
int n,a,b;
cin>>n>>a>>b;
for(int i=0;i<205;i++){
lift[i]=-1;
}
for(int i=1;i<=n;i++){
cin>>lift[i];
}
run(a,b,1);
if(last_floor!=1024) cout<<last_floor;
else cout<<"-1";
return 0;
}