错误测试点为#1 #2 #3 #4 #5 #11 #12 #14 #15 #16
#include <iostream>
using namespace std;
int a[210],N,A,B,K[210],up,down;
void init(){
cin >> N >> A >> B;
for (int i = 1;i <= N;i ++){
a[i] = -1;
}
for (int i = 1;i <= N;i ++){
cin >> K[i];
}
}
void bfs(){
int head=0,tail=1,q[210]={0};
a[A] = 0;
q[1] = 1;
while (head < tail){
head ++;
up = q[head] + K[q[head]];
down = q[head] - K[q[head]];
if (up >= 1 && a[up] == -1){
a[up] = head;
tail ++;
q[tail] = up;
}
if (down >= 1 && a[down] == -1){
a[down] = head;
tail ++;
q[tail] = down;
}
}
}
void print(){
cout << a[B];
}
int main(){
init();
bfs();
print();
return 0;
}
谢谢!!!(嘶吼