社区讨论

50分求助,bfs不知道哪里出了问题,求助大佬!!

P1135奇怪的电梯参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo2p1jlc
此快照首次捕获于
2023/10/23 17:26
2 年前
此快照最后确认于
2023/10/23 17:26
2 年前
查看原帖
C
C
#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;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...