金石猴刃,if 你 BFS RE on#1#6#8#10

B3625 迷宫寻路

liyuanxi_0214 @ 2024-12-23 20:47:32

把你那破O2给关喽。

顺便问一下这【数据删除】的为什么厌氧。

#include<iostream>
#include<queue>
using namespace std;
int n,m;
char a[105][105];
bool vis[105][105];
int bfs(int sx,int sy){
    queue<int> qx,qy;
    int dx[]={-1,1,0,0};
    int dy[]={0,0,-1,1};
    qx.push(sx);
    qy.push(sy);
    vis[sx][sy]=1;
    while(!qx.empty()){
        int x=qx.front();
        int y=qy.front();
        qx.pop();
        qy.pop();
        if(x==n&&y==m){
            cout<<"Yes";
            return 0;
        }
        for(int i=0;i<4;i++){
            int nx=x+dx[i];
            int ny=y+dy[i];
            if(nx<1||nx>n||ny<1||ny>m)continue;
            if(a[nx][ny]=='#')continue;
            if(vis[nx][ny]==1)continue;
            qx.push(nx);
            qy.push(ny);
            vis[nx][ny]=1;
        }
    }
    cout<<"No";
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    bfs(1,1);
    return 0;
}

by ZMQ_Ink6556 @ 2024-12-23 20:49:57

@liyuanxi_0214 BFS 结束没有返回值,导致 UB,导致 RE。

关掉 O2 能过是因为 你运气好 玄学


by ZMQ_Ink6556 @ 2024-12-23 20:50:32

你就不能 void bfs() 吗?


by liyuanxi_0214 @ 2024-12-23 20:53:10

@ZMQ_Ink6556

谢谢您,我以为自己记得写了(磕头


|