66分求调!!!
查看原帖
66分求调!!!
1035872
__Giraffe__楼主2024/7/28 20:58
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6;
int k[maxn];
bool p[maxn];
int n;
int a;
int b;
queue<int> q1;
void bfs(int i){
	while(1){
		if(q1.empty()) {
			cout<<-1;
			return ;
		}	
		for(int j=1;j<=q1.size();j++){
			int x=q1.front()+k[q1.front()];
			int y=q1.front()-k[q1.front()];
			if(q1.front()==b) {
				cout<<i;
				return ;
			}
			if(x<=n&&!p[x]) {
				
				q1.push(x);	
				p[x]=true;	
			}								 
			if(y>0&&!p[y]) {
				
				q1.push(y);
				p[y]=true;
			}				
			q1.pop();
		}
		++i;
	}	
		
		
			 	
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++) cin>>k[i];
	q1.push(a);
	bfs(0);
}

2024/7/28 20:58
加载中...