#9WA why??
查看原帖
#9WA why??
13164
13813812138lalala楼主2021/7/28 18:02
#include<bits/stdc++.h>
using namespace std;

int a[123123],ff[123123],f[123123],n,aa,bb,flag=1;

void bfs()
{
	int head=0,tail=1;

	f[1]=aa;
	while(head<tail){
		head++;
		int up=a[f[head]]+f[head],down=f[head]-a[f[head]];     
		if (up<=n&&ff[up]==0&&a[f[head]]!=0&&up!=aa){
			tail++;
			f[tail]=up;
			ff[tail]=ff[head]+1;
			if(f[tail]==bb){
				printf("%d",ff[tail]);flag=0;return;
			}
		}
		if (down>0&&ff[down]==0&&a[f[head]]!=0&&down!=aa){
			tail++;
			f[tail]=down;
			ff[tail]=ff[head]+1;
			if(f[tail]==bb){
				printf("%d",ff[tail]);flag=0;return;
			}
		}
//		printf("head=%d tail=%d\n",head,tail);
	}
	
}

int main()
{
	scanf("%d%d%d",&n,&aa,&bb);
	if(aa==bb) {
		printf("0");
		return 0;
	}
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	bfs();
	if(flag)printf("-1");
	return 0;
}
2021/7/28 18:02
加载中...