50分求大佬指错,谢谢
查看原帖
50分求大佬指错,谢谢
257635
XAKXIANGAKIOI楼主2020/7/29 22:07
#include <bits/stdc++.h>
using namespace std;
int N, A, B, y[99999], vis[99999];
struct kkk{
	int d, step;
	kkk(int a = 0, int b = 0) {d = a; step = b;} 
}s[9999];
int bfs(int x){
	int tail = 0, head = 0;
	s[tail++] = kkk(x,0);
	vis[x] = 1;
	while(head < tail){
		kkk cur = s[head++];
		if(cur.d == B) return cur.step;
		if(y[cur.d] == 0) continue;
		if(cur.d + y[cur.d] <= B && !vis[cur.d + y[cur.d]])
			s[tail++] = kkk(cur.d+y[cur.d],cur.step+1);
		if(cur.d - y[cur.d] >= 1 && !vis[cur.d - y[cur.d]])
			s[tail++] = kkk(cur.d-y[cur.d],cur.step+1);
	}
	return -1;
}
int main(){
	scanf("%d %d %d", &N, &A, &B);
	for(int i=1;i<=N;i++) scanf("%d", &y[i]);
	printf("%d", bfs(A));
	return 0;
}
2020/7/29 22:07
加载中...