提交了5次,一直30pts
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int dx[4]={1,0,-1,0};
const int dy[4]={0,-1,0,1};
char a[505][505];
int n,m;
int vis[505][505];
struct node{
int x,y;
};
bool spif(int x,int y){
return(x>=0 && x<=n+1 && y>=0 && y<=m+1 && !vis[x][y] && a[x][y]!='*');
}
void bfs(int i,int j){
queue<node> q;
q.push({i,j});
vis[i][j]=1;
while(!q.empty()){
node now=q.front();
q.pop();
for(int i=0;i<4;i++){
int fx=now.x+dx[i],fy=now.y+dy[i];
if(spif(fx,fy)){
q.push({fx,fy});
vis[fx][fy]=1;
}
}
}
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
bfs(0,0);
int ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]=='0' && !vis[i][j]) ans++;
cout<<ans;
return 0;
}
/*
5 6
00***0
00*0*0
00*0*0
**00**
0*****
4
*/