30分求调dfs
查看原帖
30分求调dfs
1059565
liuyinuo666楼主2024/12/30 22:33
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a,b;
int k[114514];
int vis[114514];
void dfs(int step,int fl)
{
	vis[fl]=step;
	int u=fl+k[fl],d=fl-k[fl];
	if(u<=n && step+1<vis[u])
	{
		dfs(step+1,u);
	}
	if(d>0 && step+1<vis[d])
	{
		dfs(step+1,d);
	}
}
signed main()
{
	memset(vis,-1,sizeof(vis));
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		cin>>k[i];
	}
	dfs(0,a);
	if(vis[b]!=-1) cout<<vis[b];
	else cout<<-1;
}

2024/12/30 22:33
加载中...