50分求助,bfs不知道哪里出了问题,求助大佬!!
查看原帖
50分求助,bfs不知道哪里出了问题,求助大佬!!
846575
qgzhuyin楼主2023/4/27 07:46
#include<bits/stdc++.h>
using namespace std;

int N,A,B;
int K[205];
int sum[205];

void bfs(int x){
	int temp=A;
	queue <int>qq;
	qq.push(temp);
	while(!qq.empty()){
		int head=qq.front();
		qq.pop();
		int d=sum[head];
		//for(int i=1;i<=N;i++){
			int u1=head+K[head];
			int u2=head-K[head];
		//	cout<<u1<<" "<<u2<<endl;
			if((u1<1||u1>N||sum[u1]!=-1)&&(u2<1||u2>N||sum[u2]!=-1))continue;
			if(u1<1||u1>N||sum[u1]!=-1){
				temp=u2;
				sum[u2]=d+1;
			//	cout<<sum[u2]<<endl;
				qq.push(temp);
			}
			if(u2<1||u2>N||sum[u2]!=-1){
				temp=u1;
				sum[u1]=d+1;
			//	cout<<sum[u1]<<endl;
				qq.push(temp);
			}
		//}
	}
}

int main(){
	memset(sum,-1,sizeof(sum));
	cin>>N>>A>>B;
	for(int i=1;i<=N;i++){
		cin>>K[i];
	}
	sum[A]=0;
	bfs(A);
	cout<<sum[B];
	return 0;
}
2023/4/27 07:46
加载中...