悬赏关注
code:
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int r,c,cnt;
bool a[510][510];
int pyx[5]={0,0,1,-1},
pyy[5]={1,-1,0,0};
struct node{
int x,y;
};
queue <node> q;
void bfs(int x,int y)
{
node k;
k.x=x;k.y=y;
q.push(k);
while(!q.empty())
{
node s=q.front();
q.pop();
for(int i=0;i<4;i++)
{
int xx=s.x+pyx[i];
int yy=s.y+pyy[i];
if(xx>=1&&xx<=r&&yy>=1&&yy<=c&&!a[xx][yy])
{
a[xx][yy]=1;
node p;
p.x=xx;p.y=yy;
q.push(p);
}
}
}
return ;
}
int main()
{
memset(a,0,sizeof(a));
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>r>>c;
for(int i=1;i<=r;i++)
{
for(int j=1;j<=c;j++)
{
char ch;
cin>>ch;
if(ch=='*') a[i][j]=1;
else a[i][j]=0;
}
}
for(int i=1;i<=r;i++)
{
for(int j=1;j<=c;j++)
{
if(!a[i][j])
{
bfs(i,j);
}
}
}
for(int i=1;i<=r;i++)
{
for(int j=1;j<=c;j++)
{
if(!a[i][j]) cnt++;
}
}
cout<<cnt;
}