问题
P1135用了DFS,后面全部AC,但第一个点超时。新手求助怎么过第一个测试点,希望大佬指教

错误代码
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int ans=1e9,cnt;
int k[205];
bool vis[205];
void Dfs(int x,int t){
if(t>=ans) return;
if(x==b){
ans=min(ans,t);
return;
}
if(x-k[x]>0&&vis[x-k[x]]==0){
vis[x-k[x]]=1;
Dfs(x-k[x],t+1);
vis[x-k[x]]=0;
}
if(x+k[x]<=n&&vis[x+k[x]]==0){
vis[x+k[x]]=1;
Dfs(x+k[x],t+1);
vis[x+k[x]]=0;
}
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>k[i];
vis[a]=1;
Dfs(a,0);
if(ans==1e9) cout<<-1;
else cout<<ans;
return 0;
}