为什么我这个dfs的cnt不会更新?
只有10分qwq
#include <bits/stdc++.h>
using namespace std;
int n,a,b,ans=0,cnt=9999999;
unsigned int k[202];
int vis[202];
bool end()
{
bool check=true;
for(int i=1;i<=n;i++)
{
if(i==b)
{
continue;
}
if(vis[i]==0)
{
check=false;
return check;
}
}
return true;
}
void dfs(int f,bool w,int x)
{
ans++;
if(w)
{
f+=x;
if(f>n)
{
return;
}
if(vis[f]==1)
{
return;
}
if(end)
{
return;
}
if(f==b)
{
if(ans<cnt)
{
cnt=ans;
}
return;
}
vis[f]=1;
dfs(f,true,k[f]);
dfs(f,false,k[f]);
vis[f]=0;
}
else
{
f-=x;
if(f<1)
{
return;
}
if(vis[f]==1)
{
return;
}
if(end)
{
cnt=-1;
return;
}
if(f==b)
{
if(ans<cnt)
{
cnt=ans;
}
return;
}
vis[f]=1;
dfs(f,true,k[f]);
dfs(f,false,k[f]);
vis[f]=0;
}
}
int main()
{
memset(vis,0,sizeof(vis));
scanf("%d%d%d",&n,&a,&b);
for(int i=1;i<=n;i++)
{
scanf("%d",&k[i]);
}
dfs(a,true,k[a]);
dfs(a,false,k[a]);
printf("%d",cnt);
return 0;
}