76RE玄关求条!
查看原帖
76RE玄关求条!
1300775
RC4010楼主2024/10/10 21:20
#include<iostream>
#include<queue>
using namespace std;
queue<int>q;
int t[250];
bool visit[250];
int num[250];
int bfs(int n,int a,int b){
	q.push(a);
	while(!q.empty()){
			int res=q.front();
			if (res==b) return t[res];
			if (t[res]>n) return -1;
			if (res-num[res]>=0&&visit[res-num[res]]==0){
				q.push(res-num[res]);
				t[res-num[res]]=t[res]+1;
				visit[res-num[res]]=1;
			}
			if (res+num[res]<=n&&visit[res+num[res]]==0){
				q.push(res+num[res]);
				t[res+num[res]]=t[res]+1;
				visit[res+num[res]]=1;
			}
			q.pop();
	}
}
int main(){
	int n,a,b;
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++){
		cin>>num[i];
	}
	cout<<bfs(n,a,b);
}
2024/10/10 21:20
加载中...