题解
2023-08-26 12:39:51
发布于:广东
11阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int v[209],dis[209],n;
bool vis[209];
void bfs(int x){
memset(dis,-1,sizeof(dis));
queue<int> q;
q.push(x);
vis[x]=1;
dis[x]=0;
while(q.size()){
int r=q.front();
q.pop();
if(r+v[r]<=n&&!vis[r+v[r]]){
q.push(r+v[r]);
vis[r+v[r]]=1;
dis[r+v[r]]=dis[r]+1;
}
if(r-v[r]>=1&&!vis[r-v[r]]){
q.push(r-v[r]);
vis[r-v[r]]=1;
dis[r-v[r]]=dis[r]+1;
}
}
}
int main() {
int a,b;
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>v[i];
bfs(a);
cout<<dis[b];
return 0;
}
这里空空如也
有帮助,赞一个