#1~6RE #14,#15WA 求调
查看原帖
#1~6RE #14,#15WA 求调
1076932
z__j__y楼主2024/5/2 23:08
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int n,a,b;
struct NODE{
	int data,num,value=-1;
	bool flag=0;
}x[205];
queue <NODE> q;
signed main(){
	freopen("P1135_1.in","r",stdin);
	cin >> n >> a >> b;
	for(int i=1;i<=n;i++){
		cin >> x[i].num;
		x[i].data=i;
	}
	x[a].value=0,x[a].flag=1;
	q.push(x[a]);
	while (!q.empty()){
		NODE tmp=q.front();
		
		if(tmp.data==b){
			cout << tmp.value;
			return 0;
		}
		q.pop();
		if(tmp.data+tmp.num<=n&&!x[tmp.data+tmp.num].flag){
			q.push({tmp.data+tmp.num,x[tmp.data+tmp.num].num,tmp.value+1,0});
			x[tmp.data+tmp.num].flag=1;
		}
		if(tmp.data-tmp.num>=1&&!x[tmp.data+tmp.num].flag){
			q.push({tmp.data-tmp.num,x[tmp.data-tmp.num].num,tmp.value+1,0});
			x[tmp.data-tmp.num].flag=1;
		}
	}
	cout << -1;
}
2024/5/2 23:08
加载中...