BFS wa了#8#9求助
查看原帖
BFS wa了#8#9求助
744070
qyf1374478722楼主2022/10/6 01:19
#include<bits/stdc++.h>
using namespace std;
long long n,a,b,ans;
int p[201];
int flag;
int d[201];
bool find_up(int x)
{
	if(x+p[x]<=n&&d[x+p[x]]==0)
		return 1;
	return 0;
}
bool find_back(int x)
{
	if(x-p[x]>=1&&d[x-p[x]]==0)
		return 1;
	return 0;
}
void dfs(int x,int i)
{
	d[x]=1;
	if(flag<=i)
		return;
	if(x==b)
	{
		flag=min(i,flag);
		return;
	}
	if(find_up(x))
	{
		dfs(x+p[x],i+1);
	}
	if(find_back(x))
	{
		dfs(x-p[x],i+1);
	}
	return;
}
int main()
{
	flag=114514;
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
		cin>>p[i];
	dfs(a,0);
	if(flag==114514)
		cout<<-1;
	else
		cout<<flag;
	return 0;
}
2022/10/6 01:19
加载中...