1 /* 2 利用宽搜将每块积水填满,添加一个计数器,记下填满几块积水即答案 3 */ 4 #include<iostream> 5 using namespace std; 6 char a[105][105]; 7 int r[8][2] = {{-1,-1},{-1,0},{0,-1},{-1,1},{1,-1},{1,1},{1,0},{0,1}}; 8 int n,m; 9 void dfs(int x,int y) 10 { 11 //cout << x << " " << y << endl; 12 if(x < 0 || x >= n) return ; 13 if(y < 0 || y >= m) return ; 14 if(a[x][y] != 'W') return ; 15 a[x][y] = '.'; 16 for(int i=0; i<8; ++i) 17 dfs(x+r[i][0],y+r[i][1]); 18 } 19 int main() 20 { 21 while(cin >> n >> m) 22 { 23 int ans = 0; 24 for(int i=0; i<n; ++i) 25 cin >> a[i]; 26 for(int i=0; i<n; ++i) 27 for(int j=0; j<m; ++j) 28 if(a[i][j] == 'W') 29 { 30 ++ans; 31 dfs(i,j); 32 } 33 cout << ans << endl; 34 } 35 return 0; 36 }