54分求条
查看原帖
54分求条
1280618
An_OIer楼主2024/11/11 22:26
#include<bits/stdc++.h>
using namespace std;
long long i=0,j,f[10000001],x[100000001],n,m,s;
struct dt 
{
	queue<long long>a;
	queue<long long>k;
}ans;
int main()
{
	cin>>m>>n>>s;
	for(i=1; i<=s; i++)
	{
		cin>>x[i];
	}
	ans.a.push(n);
	ans.k.push(0);
	while(1)
	{
		bool fl=0;
		if(!(ans.a.front()+x[ans.a.front()]>s)&&f[ans.a.front()+x[ans.a.front()]]==0)
		{
			f[ans.a.front()+x[ans.a.front()]]=1;
			ans.a.push(ans.a.front()+x[ans.a.front()]);
			ans.k.push(ans.k.front()+1);
			fl=1;
		}
		if(!(ans.a.front()-x[ans.a.front()]<1)&&f[ans.a.front()-x[ans.a.front()]]==0)
		{
			f[ans.a.front()-x[ans.a.front()]]=1;
			ans.a.push(ans.a.front()-x[ans.a.front()]);
			ans.k.push(ans.k.front()+1);
			fl=1;
		}
		if(fl==0&&i!=0&&ans.a.size()==0)
		{
			cout<<-1;
			return 0;
		}
		if(ans.a.front()==m)
		{
			cout<<ans.k.front();
			return 0;
		}
		ans.a.pop();
		ans.k.pop();
		i++;
	}
}
2024/11/11 22:26
加载中...