94分bfs 第九个点wa了
查看原帖
94分bfs 第九个点wa了
1329444
Pmch楼主2025/7/28 11:41
#include<bits/stdc++.h>
#define LL long long
#define DB double
using namespace std;

const int N = 2e2+5;
int n,st,ed,ans = INT_MAX;
int a[N],dis[N];
bool v[N];
queue<int> q;

void bfs(){
	q.push(st);
	v[1] = 1;
	while(!q.empty()){
		int x = q.front();
		if(x == ed){
			ans = dis[x];
			return ;
		}
		q.pop();
		int nxt1 = x+a[x],nxt2 = x-a[x];
		if(nxt1 <= n && !v[nxt1]){
			q.push(nxt1);
			v[nxt1] = 1;
			dis[nxt1] = dis[x]+1;
		}
		if(0 < nxt2 && !v[nxt2]){
			q.push(nxt2);
			v[nxt2] = 1;
			dis[nxt2] = dis[x]+1;
		}
	}
	ans = -1;
}

int main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	cin>>n>>st>>ed;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	
	bfs();
	cout<<ans;
	return 0;
}

2025/7/28 11:41
加载中...