代码:
#include <bits/stdc++.h>
using namespace std;
int n, A, B, k[205], a[205];
struct fl{
int f, c;
};
queue <fl> q;
int main(){
cin >> n >> A >> B;
for (int i = 1; i <= n; i++){
cin >> k[i];
a[i] = -1;
}
q.push({A, 0});
while (!q.empty()){
fl d = q.front();
q.pop();
for (int i = -1; i <= 1; i += 2){
int newfloor = d.f + k[d.f] * i;
if (newfloor < 1 || newfloor > n || a[newfloor] != -1){
continue;
}
a[newfloor] = d.c + 1;
q.push({newfloor, d.c + 1});
}
}
cout << a[B];
return 0;
}