? 怎么WA了一个点?玄关
查看原帖
? 怎么WA了一个点?玄关
1036002
yjjh楼主2024/7/4 10:22
#include <iostream>
#include <queue>
using namespace std;
const int N=201;
int dt[N],n,b;
int k[N];
std::queue<int>q1;
std::queue<int>q2;
inline int bbfs(int x,int bs){
	if(x+k[x]>=1&&x+k[x]<=n&&dt[x+k[x]]==0){
		if(x+k[x]==b)return bs+1;
		q1.push(x+k[x]);q2.push(bs+1),dt[x+k[x]]=1;
	}
	if(x-k[x]>=1&&x-k[x]<=n&&dt[x-k[x]]==0){
		if(x-k[x]==b)return bs+1;
		q1.push(x-k[x]);q2.push(bs+1),dt[x-k[x]]=1;
	}
	return 0;
}
inline int bfs(){
	while(q1.size()){
		int t=bbfs(q1.front(),q2.front());
		if(t)return t;
		q1.pop();q2.pop();
	}
	return -1;
}
int main(){
	int a;
	std::cin >>n>>a>>b;
	for(int i=1;i<=n;i++)std::cin >>k[i];
	q1.push(a);q2.push(0);
	std::cout <<bfs();
	return 0;
}
2024/7/4 10:22
加载中...