POJ 2386 Lake Counting

解説
特になし。蟻本に書いてある。

#include <iostream>

using namespace std;

int n,m,c;
char map[102][102];

void dfs(int x, int y){
  map[x][y] = '.';
  
  for(int i = -1; i <= 1; i++){
    for(int j = -1; j <= 1; j++){
      int nx = x + i, ny = y + j;
      if(0 <= nx && nx < n && 0 <= ny && ny < m && map[nx][ny] == 'W')
	dfs(nx,ny);
    }
  }
}

int main(){
  cin >> n >> m;
  for(int i = 0; i < n; i++) cin >> map[i];
  
  for(int i = 0; i < n; i++){
    for(int j = 0; j < m; j++){
      if(map[i][j]=='W'){
	dfs(i,j);
	c++;
      }
    }
  }
  cout << c << endl;
}