// 2012-05-28 水泡个数 p2386 dfs
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 105;
int map[N][N];
int n, m;
int d_x[] = {-1, -1, -1, 0, 0, 1, 1, 1};
int d_y[] = {-1, 0, 1, -1, 1, -1, 0, 1};
bool ok(int x, int y) {
if(0 <= x < n && 0 <= y < m && map[x][y] == 1) return true;
return false;
}
void dfs(int a, int b) {
if(ok(a, b)) {
map[a][b] = 0;
for(int i = 0; i < 8; i++) {
dfs(a+d_x[i], b+d_y[i]);
}
}
}
int ans;
int main() {
int i, j, k;
char c, str[N];
scanf("%d%d", &n, &m);
for(i = 0; i < n; i++) {
scanf("%s", str);
for(j = 0; j < m; j++) {
if(str[j] == 'W') {
map[i][j] = 1;
}
else map[i][j] = 0;
}
}
ans = 0;
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++) {
if(map[i][j]) {
dfs(i, j);
ans++;
}
}
}
printf("%d\n", ans);
system("pause");
return 0;
}
poj 2386 Lake Counting (DFS~)
最新推荐文章于 2022-07-24 19:58:51 发布