姹紫嫣红
查看原帖
姹紫嫣红
1381257
zhengyi0402楼主2024/10/15 20:48
#include<bits/stdc++.h>
#define mp make_pair
#define f first
#define s second
#define int long long
using namespace std;
int n,aa,b,vis[222],a[222];
void bfs(){
	queue<pair<int,int> > q;
	q.push(mp(aa,0));
	vis[aa]=1;
	while(!q.empty()){
		pair<int,int> fr = q.front();q.pop();
		if(fr.f==b){
			cout<<fr.s<<endl;
			return ;
		}
		if(fr.f<1||fr.f>n){
			continue;
		}
		int rx = fr.f+a[fr.f],ry = fr.s+1;
		if(a[rx]>=1&&a[rx]<=n&&vis[rx]==0){
			q.push(mp(rx,ry));vis[rx]=1;
		}
		rx=fr.f-a[fr.f];
		if(a[rx]>=1&&a[rx]<=n&&vis[rx]==0){
			q.push(mp(rx,ry));vis[rx]=1;
		}
	}
}
signed main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n>>aa>>b;for(int i =1;i <= n;i++)cin>>a[i];
	bfs();
	return 0;
	//十年OI一场空,define int 见祖宗。
	//十年OI一场空,不开long long见祖宗。
}

2024/10/15 20:48
加载中...