第一个点过不去,其他都AC了
查看原帖
第一个点过不去,其他都AC了
518293
zsenhe楼主2023/3/31 11:44

求助,没找到错误

#include <iostream>
#include <cstring>
using namespace std;

const int N = 250; 

int k[N];
int d[N];
int q[N*N];
int n,a,b;


int bfs(){
	int hh=0,tt=0;
	q[0] = 1;
	memset(d,-1,sizeof(d));
	d[1] = 0;
	int offset[2] = {-1,1};
	while(hh<=tt){
		int head = q[hh++];
		for(int i=0;i<2;i++){
			int next = head+(offset[i]*k[head]);
			if(next>=0&&next<=n&&d[next]==-1){
				d[next] = d[head]+1;
				q[++tt] = next;
			}
		}
	}
	return d[b]-d[a];
}

int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++) cin>>k[i];
	cout << bfs();
	return 0;
}
2023/3/31 11:44
加载中...