代码·:
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
char a[505][505];
bool vis[505][505];
void bfs(int s,int w){
queue<pair<int,int> >q;
q.push({s,w});
while(!q.empty()){
int x=q.front().first,y=q.front().second;
q.pop();
if(vis[x][y]||a[x][y]!='0')continue;
if(x<1||x>n||y<1||y>m)continue;
vis[x][y]=1;
a[x][y]='@';
q.push({x+1,y});
q.push({x-1,y});
q.push({x,y+1});
q.push({x,y-1});
}
}
int main(){
//freopen("P1506_1.in","r",stdin);
//freopen("!!1.in","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=m;i++)if(a[i][1]!='*')bfs(i,1);
for(int i=1;i<=n;i++)if(a[i][n]!='*')bfs(i,m);
for(int i=1;i<=n;i++)if(a[1][i]!='*')bfs(1,i);
for(int i=1;i<=m;i++)if(a[i][m]!='*')bfs(n,i);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='0')ans++;cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout<<ans;
//cerr<<ans;
return 0;
}