求优化
查看原帖
求优化
1316630
_ryan楼主2024/11/7 19:04
#include<bits/stdc++.h>
using namespace std;
const int maxn=550; 
struct node
{
	int f,d;
};
queue<node> q;
int n,l,r,a[maxn];
bool vis[maxn];
int main()
{
	scanf("%d%d%d",&n,&l,&r);
	for(int i=1;i<=n;++i) scanf("%d",&a[i]);
	q.push((node){l,0});
	while(!q.empty())
	{
		node p=q.front();
		q.pop();
		if(p.f==r)
		{
			printf("%d",p.d);
			return 0;
		}
		for(int i=-1;i<=1;i+=2)
		{
			if(p.f+a[p.f]*i>=1&&p.f+a[p.f]*i<=n&&vis[p.f+a[p.f]*i]==0)
			{
				vis[p.f+a[p.f]*i]==1;
				q.push((node){p.f+a[p.f]*i,p.d+1});
			}
		}
	}
	printf("-1");
	return 0;
}
2024/11/7 19:04
加载中...