36分求调(玄关)
查看原帖
36分求调(玄关)
1035872
__Giraffe__楼主2024/7/28 17:24
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e8;
int k[maxn];
bool p[maxn];
int n;
int a;
int b;
queue<int> q1;
int bfs(int i){
	if(q1.empty()) return -1;
	else if(q1.front()==b) return i;	
		int x=q1.front()+k[q1.front()];
		int y=q1.front()-k[q1.front()];
		if(x<=n&&x>=1&&!p[x]) {
			q1.push(x);
			p[x]=true;
		}								 
		if(y>=1&&y<=n&&!p[y]) {
			p[y]=true;
			q1.push(y);
		}					
		q1.pop();
		bfs(++i);
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++) cin>>k[i];
	q1.push(a);
	cout<<bfs(0);
}
2024/7/28 17:24
加载中...