玄学错误
查看原帖
玄学错误
1009027
stils楼主2023/12/3 22:50

输出比答案大一(样例),没找到哪里加了ans

#include<bits/stdc++.h>
using namespace std;
const int N=35;
int n,m,used[N][N],mp[N][N];
struct point{
    int x,y;
};
void bfs(){
    queue<point>q;
    q.push((point){0,0});
    used[0][0]=1;
    while(q.size()){
        point a=q.front();
        q.pop();
        int ax=a.x,ay=a.y;
        if(mp[ax+1][ay]==0&&used[ax+1][ay]==0){
            used[ax+1][ay]=1;
            mp[ax+1][ay]=1;
            q.push((point){ax+1,ay});
        }
        if(mp[ax][ay+1]==0&&used[ax][ay+1]==0){
            used[ax][ay+1]=1;
            mp[ax][ay+1]=1;
            q.push((point){ax,ay+1});
        }
        if(ax-1>=0&&mp[ax-1][ay]==0&&used[ax-1][ay]==0){
            used[ax-1][ay]=1;
            mp[ax-1][ay]=1;
            q.push((point){ax-1,ay});
        }
        if(ay-1>=0&&mp[ax][ay-1]==0&&used[ax][ay-1]==0){
            used[ax][ay-1]=1;
            mp[ax][ay-1]=1;
            q.push((point){ax,ay-1});
        }
    }
    return;
}
int ans;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            char ch;
            cin>>ch;
            if(ch=='0')mp[i][j]==0;
            else mp[i][j]=1;
        }
    }
    bfs();
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(mp[i][j]==0)ans++;
            // cout<<mp[i][j];
        }
        // cout<<endl;
    }
    cout<<ans<<endl;
    return 0;
}
2023/12/3 22:50
加载中...