58分求调 悬关
查看原帖
58分求调 悬关
1163903
SereneMaizi_楼主2025/7/24 15:12
#include<bits/stdc++.h>
using namespace std;
int n,B,A,a[210],vis[210];
struct node{
	int an,st;
};
queue<node> q;
void bfs(int x,int st)
{
	vis[x]=1;
	q.push((node){x,st});
	while(!q.empty())
	{
		node u=q.front();
		if(u.an==B)
		{
			cout<<u.st;
			exit(0);
		}
		if(u.an+a[u.an]<=n&&vis[u.an+a[u.an]]==0)
		{
			q.push((node){u.an+a[u.an],u.st+1});
			vis[u.an+a[u.an]]=1;
		}
		if(u.an-a[u.an]>=1&&vis[u.an+a[u.an]]==0)
		{
			q.push((node){u.an-a[u.an],u.st+1});
			vis[u.an-a[u.an]]=1;
		}
		q.pop();
	}
}
int main()
{
	cin>>n>>A>>B;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	
	bfs(A,0);
	cout<<-1;
	return 0;
}
2025/7/24 15:12
加载中...