P1105|只有前四个点过了!求助!
  • 板块学术版
  • 楼主Bqr_Love_HYZ
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/12/24 14:09
  • 上次更新2023/10/28 13:47:35
查看原帖
P1105|只有前四个点过了!求助!
222725
Bqr_Love_HYZ楼主2021/12/24 14:09
//公开TJ可耻/doge 
#include<bits/stdc++.h>
using namespace std;
long long n,a,b,cnt = 1;
long long v[200005],m[200005] = {0};
bool flag = 1;
queue <int> q;

void bfs(){
	while(!q.empty()){
		long long f = q.front();
		q.pop();
		long long s = f+v[f],d = f-v[f];
		if(s == b || d == b) {flag = 0;break;}
		if(1<=s && s<=n && m[s] == 0 && v[s]) q.push(s);
		if(1<=d && d<=n && m[d] == 0 && v[d]) q.push(d);
		++cnt;
	}
	if(!flag) cout<<cnt<<endl;
}
int main(){
	cin>>n>>a>>b;
	if(a == b) {cout<<0<<endl;return 0;}
	for(long long i=1;i<=n;++i) cin>>v[i];
	q.push(a);
	m[a] = 1;
	bfs();
	if(flag) cout<<-1<<endl;
	return 0;
}

###P1105_5.in: 50 1 50 1 1 3 1 1 3 1 1 2 2 1 2 1 3 1 1 3 2 3 1 3 3 3 1 1 1 2 1 3 1 2 1 3 1 3 3 2 3 3 1 1 1 2 1 2 1 3 2 3 0

###P1105_5.out: 24

2021/12/24 14:09
加载中...