- C++
广度优先搜索典型题答案
- 2024-10-19 15:10:53 @
五级算法题答案
const int N = 10001;
int a[N],m[N][2],vis[N][2],ans[N],n,k;
void bfs(){
queue <int> q;
q.push(1);
while(!q.empty()){
int tmp=q.front();
if(tmp==k){
cout<<ans[tmp];
return;
}
q.pop();
if(!vis[tmp][0]){
if(m[tmp][0]!=0){
q.push(m[tmp][0]);
vis[tmp][0]=1;
ans[m[tmp][0]]=ans[tmp]+1;
}
}
if(!vis[tmp][1]){
if(m[tmp][1]!=0){
q.push(m[tmp][1]);
vis[tmp][1]=1;
ans[m[tmp][1]]=ans[tmp]+1;
}
}
}
cout<<-1;
}
int main() {
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
if(0<=i-a[i]) m[i][0]=i-a[i];
if(i+a[i]<=n) m[i][1]=i+a[i];
}
bfs();
}
4 条评论
-
xm2023007 传奇王者 @ 2024-11-13 11:07:13
错的,5级考试过了
-
2024-10-20 8:14:54@
太有实力了👍👍👍👍👍👍👍
-
2024-10-19 15:33:51@
谢谢你,真假侠
-
2024-10-19 15:12:21@
这道题目可是我周老师才能做出来的,那个冒牌货都做都不会做
- 1