58分求条
查看原帖
58分求条
1622701
ACwjr楼主2025/2/2 12:34
#include<bits/stdc++.h>

using namespace std;
struct node{
	int x;
	int step;
};
queue<node> q;
int a[300];
int b[300];
int n,m,k;
void bfs(int x){
	b[x]=1;
	node b1;
	b1.x=x;
	b1.step=0;
	q.push(b1);
	while(!q.empty()){
		node b2;
		b2=q.front();
		q.pop();
		if(b2.x==k){
			cout<<b2.step<<endl;
			return;
		}
		if(b[b2.x+a[b2.x]]==0&&a[b2.x]+b2.x<=n){
			b[b2.x+a[b2.x]]=1;
			node b3;
			b3.x=b2.x+a[b2.x];
			b3.step=b2.step+1;
			q.push(b3);
		}
		if(b[b2.x+a[b2.x]]==0&&b2.x-a[b2.x]>0){
			b[b2.x-a[b2.x]]=1;
			node b4;
			b4.x=b2.x-a[b2.x];
			b4.step=b2.step+1;
			q.push(b4);
		}
	}
	cout<<"-1";
}
int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
    }
	bfs(m);
    return 0;
}

2025/2/2 12:34
加载中...