社区讨论

BFS40分 蒟蒻求大佬帮助

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

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@lo7qv07v
此快照首次捕获于
2023/10/27 06:16
2 年前
此快照最后确认于
2023/10/27 06:16
2 年前
查看原帖
BFS40分 希望有大佬帮助我这个小蒟蒻
CPP
#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[209];
struct node{
	int dat;
	int dep;
};
node data[40009],tmp;
const int up[3]={0,1,-1};
int head=0,tail=1,r;
int check(int w){
	if(data[head].dat+up[r]*k[data[head].dat]<=n&&data[head].dat+up[r]*k[data[head].dat]>=0)
		return 1;
	return 0;
}
int dupl(){
	for(int j=tail-1;j>0;j--)
	{
		if(data[tail].dat==data[j].dat)return 1;	
	}
	return 0;
}
int goal(){
	if(data[head].dat==b)return 1;
	return 0;
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
		cin>>k[i];
	data[1].dat=a;
	data[1].dep=0;
	while(head<tail){
		head++;
		for(r=1;r<=2;r++){
			if(check(r)){
				tail++;
				tmp.dat=data[head].dat;
				tmp.dat+=up[r]*k[data[head].dat];
				tmp.dep=data[head].dep+1;
				data[tail]=tmp;
				if(dupl())tail--;
				else if(goal()){cout<<data[tail].dep-1;return 0;} 
			}
		}
	}
	cout<<-1;
	return 0;
} 

回复

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

正在加载回复...