浣熊隧道(bfs + queue)
2023-08-27 21:39:59
发布于:上海
17阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int mp[10001],minst=9999,vis[10001];
struct node{
int pos,step;
};
bool inmp(int pos){
return pos>=1 and pos<=n;
}
void bfs(){
queue<node> q;
q.push({a,0});
while(q.size()){
node s=q.front();
q.pop();
int dep=s.pos,st=s.step;
if(dep==b){
minst=min(minst,st);
return ;
}
int n1=dep+mp[dep],n2=dep-mp[dep];
if(inmp(n1) and !vis[n1]){
q.push({n1,st+1});
vis[n1]=1;
}
if(inmp(n2) and !vis[n2]){
q.push({n2,st+1});
vis[n2]=1;
}
}
return ;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>mp[i];
bfs();
if(minst==9999) cout<<-1;
else cout<<minst;
return 0;
}
这里空空如也
有帮助,赞一个