这题橙会不会合适点
查看原帖
这题橙会不会合适点
953589
coderJerry楼主2023/9/29 16:52

rt,就很基础的广搜。

#include <bits/stdc++.h>
using namespace std;
int n,a,b,k[210],dis[210];
int bfs(){
	queue<int> q;
	memset(dis,-1,sizeof(dis));
	q.push(a);
	dis[a]=0;
	while(q.size()){
		int x=q.front();
		q.pop();
		if(x==b) return dis[x];
		int nx=x+k[x];
		if(nx<=n&&dis[nx]==-1){
			q.push(nx);
			dis[nx]=dis[x]+1;
		}
		nx=x-k[x];
		if(nx>=1&&dis[nx]==-1){
			q.push(nx);
			dis[nx]=dis[x]+1;
		}
	}
	return -1;
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++) cin>>k[i];
	cout<<bfs();
	return 0;
}
2023/9/29 16:52
加载中...