输出比答案大一(样例),没找到哪里加了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;
}