#include<bits/stdc++.h> using namespace std; int fx[8]={1,0,-1,0,-1,-1,1,1},fy[8]={0,1,0,-1,-1,1,-1,1},ans,n,m; char a[101][101]; struct Node{ int x,y; }; queue<Node>q; int main(){ 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<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]=='W'){ a[i][j]='.'; ans++; q.push({i,j}); while(q.size()){ for(int k=0;k<8;k++){ int tx=q.front().x+fx[k],ty=q.front().y+fy[k]; if(tx>0&&tx<=n&&ty>0&&ty<=m&&a[tx][ty]=='W'){ a[tx][ty]='.'; q.push({tx,ty}); } } q.pop(); } } } } cout<<ans; return 0; } /************************************************************** Problem: 1435 User: chenshuo Language: C++ Result: Accepted Time:21 ms Memory:2088 kb ****************************************************************/