除了#7其他全mle求助
查看原帖
除了#7其他全mle求助
1126733
lxc129楼主2024/4/7 20:37
#include<bits/stdc++.h>
using namespace std;
int n,s,e,a[201],dis[201];
bool vis[201];
void bfs(int st){
	vis[st]=1;
	queue<int>q;
	q.push(st);
	while (q.size()){
		int cur=q.front();
		q.pop();
		if (cur-a[cur]>0){
			vis[cur-a[cur]]=1;
			dis[cur-a[cur]]=dis[cur]+1;
			q.push(cur-a[cur]);
		}
		if (cur+a[cur]<=n){
			vis[cur+a[cur]]=1;
			dis[cur+a[cur]]=dis[cur]+1;
			q.push(cur+a[cur]);
		}
	}
}
int main(){
	cin>>n>>s>>e;
	if (s==e){
		cout<<'0';
		return 0;
	}
	for (int i=1;i<=n;i++) cin>>a[i];
	bfs(s);
	if (dis[e]==0) cout<<'-1';
	else cout<<dis[e];
}
2024/4/7 20:37
加载中...