社区讨论

80分BFS求助, 第九、十个测试点没过

P1135奇怪的电梯参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo7f6f3j
此快照首次捕获于
2023/10/27 00:49
2 年前
此快照最后确认于
2023/10/27 00:49
2 年前
查看原帖
大佬们救救!!!SOS
CPP
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n,a,b;//楼梯层数,开始 结束
int k[205];//每层楼梯可走的地方
bool vis[205];
int cnt;
// int d[205];
void bfs();
int main(){
    scanf("%d %d %d",&n,&a,&b);
    for(int i=1;i<=n;i++) scanf("%d",&k[i]);
    memset(vis,false,sizeof(vis));
    // d[stx] = 0;
    bfs();
    return 0;
}
void bfs(){
    queue<int>que;
    int nx = a;
    int nnx;
    que.push(nx);
    while(!que.empty()){
        nx = que.front();
        que.pop();
        if(nx == b) break;
        if(nx+k[nx] <= n && !vis[nx+k[nx]]){
            nnx = nx+k[nx];
            vis[nnx] = true;
            que.push(nnx);
            cnt++;
        }else if(nx-k[nx] >=1&& !vis[nx-k[nx]]){
            nnx = nx-k[nx];
            vis[nnx] = true;
            que.push(nnx);
            cnt++;
        }
    }
    if(nx==b) cout << cnt;
    else cout << -1 ;
    return;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...