请“大脑”帮帮看一下哪错了
#include<bits/stdc++.h>
using namespace std;
int n, a, b, cnt = -1;
int k[10000];
int flag[10000];
void dfs(int x, int f){
flag[x] = f;
if(x + k[x] <= n && flag[x + k[x]] > f+1) dfs(x+k[x], f+1);
if(x - k[x] >= 1 && flag[x - k[x]] > f+1) dfs(x-k[x], f+1);
}
int main(){
memset(flag,1e9,sizeof(flag));
cin >> n >> a >> b;
for(int i = 1; i <= n; i++){
cin >> k[i];
}
if(a == b){
cout << 0;
return 0;
}
dfs(a, 0);
if(a == b){
cout << 0;
return 0;
}
flag[b] == 1e9 ? cout << -1 : cout << flag[b];
return 0;
}