代码如下,求解答
#include <bits/stdc++.h>
using namespace std;
int ans,A,B,N,K[1000];
int visited[1000];
queue<int> Q;
int main(){
cin >> N >> A >> B;
for(int i = 1; i <= N; i++){
cin >> K[i];
}
memset(visited,-1,sizeof(visited));
visited[A] = 1;
int u;
Q.push(A);
ans = 0;
while(!Q.empty()){
u = Q.front();
Q.pop();
if(u == B) break;
for(int i = -1; i < 2;i += 2){
int dest = u + (K[u] * i);
if(dest >= 1 && dest <= N && visited[dest] == -1){
visited[dest] = 1;
ans++;
Q.push(dest);
}
}
}
if(u == B){
cout << ans;
}else{
cout << -1;
}
}