#include<bits/stdc++.h>
using namespace std;
char mp[111][111];
int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}} ;
int n,m;
int ans=0;
struct node{
int x,y;
};
void bfs(int a,int b){
mp[a][b]='.';
node s;
s.x=a;
s.y=a;
queue<node> q;
q.push(s);
while(!q.empty()){
node f=q.front();
for(int i=0;i<8;i++){
node t;
t.x=f.x+dir[i][0];
t.y=f.y+dir[i][1];
if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&(mp[t.x][t.y]=='W')){
mp[t.x][t.y]='.';
q.push(t);
}
}
q.pop();
}
return;
}
int main(){
cin>>n>>m;
memset(mp,'.',sizeof(mp));
for(int i=0;i<n;i++){
cin>>mp[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(mp[i][j]=='W'){
ans++;
bfs(i,j);
}
}
}
cout << ans << endl;
return 0;
}
07-05
636
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)