0分求救
查看原帖
0分求救
936407
Oldxu114514楼主2024/8/5 17:50
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int aa[2002];
int cnt[2002];
queue<int> f;
void bfs()
{
	f.push(1);
	int sum=1;
	while(!f.empty())
	{
		int floor=f.front();
		if(floor==b)
		{
			return;
		}
		f.pop();
		for(int i=1;i<=2;i++)
		{
			if(i==1)
			{
				int nfloor=floor+aa[floor];
				if(nfloor>=1 && nfloor<=n)
				{
					cnt[nfloor]=sum+1;
					f.push(nfloor);
				}
			}
			else
			{
				int nfloor=floor-aa[floor];
				if(nfloor>=1 && nfloor<=n)
				{
					cnt[nfloor]=sum+1;
					f.push(nfloor);
				}
			}
		}
		sum++;
	}
	return;
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		cin>>aa[i];
	}
	bfs();
	if(cnt[b]!=0)
	{
		cout<<cnt[b]<<endl;
	}
	else
	{
		cout<<-1<<endl;
	}
	return 0;
}

2024/8/5 17:50
加载中...