#include<bits/stdc++.h>
using namespace std;
const int maxn=100+5;
int m,n,ans=0;
char a[maxn][maxn];
int dx[9]={0,0, 0,1, 1,1,-1,-1,-1};
int dy[9]={0,1,-1,0,-1,1, 0, 1,-1};
int read()
{
int x=0;
char ch=getchar();
while(ch<'0' || ch>'9')
ch=getchar();
while(ch>='0' && ch<='9')
{
x=10*x+ch-'0';
ch=getchar();
}
return x;
}
void init()
{
freopen("input.txt","r",stdin);
}
void readdata()
{
n=read();
m=read();
for(int i=1;i<=n;i++)
scanf("%s",a[i]);
}
void dfs(int x,int y)
{
if(a[x][y]!='.')
{
a[x][y]='.';
for(int i=1;i<=8;i++)
{
int x2=x+dx[i];
int y2=y+dy[i];
if(x2<1 || x2>n || y2<1 || y2>m) continue;
dfs(x2,y2);
}
}
}
void work()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]=='W')
{
dfs(i,j);
ans++;
}
}
}
printf("%d",ans);
}
int main()
{
init();
readdata();
work();
return 0;
}
by 风说我活了 @ 2019-01-19 10:50:40
[Markdown](https://www.luogu.org/wiki/show?name=%E5%B8%AE%E5%8A%A9%EF%BC%9Amarkdown)
by std_DFS @ 2019-01-19 11:06:53
```c
#include<bits/stdc++.h>
using namespace std;
const int maxn=100+5;
int m,n,ans=0;
char a[maxn][maxn];
int vis[maxn][maxn];
int dx[9]={0,0, 0,1, 1,1,-1,-1,-1};
int dy[9]={0,1,-1,0,-1,1, 0, 1,-1};
int read()
{
int x=0;
char ch=getchar();
while(ch<'0' || ch>'9') ch=getchar();
while(ch>='0' && ch<='9')
{
x=10*x+ch-'0';
ch=getchar();
}
return x;
}
void init()
{
freopen("input.txt","r",stdin);
}
void readdata()
{
memset(vis,0,sizeof(vis));
n=read();
m=read();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
scanf("%c",&a[i][j]);
}
}
void dfs(int x,int y)
{
if(a[x][y]!='.')
{
a[x][y]='.';
for(int i=1;i<=8;i++)
{
int x2=x+dx[i];
int y2=y+dy[i];
if(x2<1 || x2>n || y2<1 || y2>m) continue;
dfs(x2,y2);
}
}
}
void work()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]=='W')
{
dfs(i,j);
ans++;
}
}
}
printf("%d",ans);
}
int main()
{
init();
readdata();
work();
return 0;
}
```
by 风说我活了 @ 2019-01-19 11:26:51