AcWing 1097. 池塘计数
原题链接
简单
作者:
ZTEG
,
2019-11-08 14:56:24
,
所有人可见
,
阅读 2131
#include<bits/stdc++.h>
using namespace std;
int m,n,tx,ty,ans;
char t;
int f[115][115];
struct vivo{
int x,y;
}mi;
queue < vivo > v;
int kx[8]={1,-1,0,0,1,1,-1,-1};
int ky[8]={0,0,1,-1,1,-1,-1,1};
void oppo(int ktx,int kty)
{
mi.x=ktx;
mi.y=kty;
f[ktx][kty]=0;
v.push(mi);
while(v.size())
{
for(int i=0;i<8;i++)
{
tx=v.front().x+kx[i];
ty=v.front().y+ky[i];
if(tx>0&&ty>0&&tx<=m&&ty<=n&&f[tx][ty])
{
f[tx][ty]=0;
mi.x=tx;
mi.y=ty;
v.push(mi);
}
}
v.pop();
}
ans++;
}
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
cin>>t;
if(t=='.')
f[i][j]=0;
else
f[i][j]=1;
}
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
if(f[i][j])
oppo(i,j);
cout<<ans<<endl;
}
好家伙,搁着卖手机呢
棒啊