#include <stdio.h>
int a, b; // dimensions: a rows, b columns
char *map;
#define MAP(i, j) map[(i) * b + (j)]
void dfs(int x, int y) {
if (x < 0 || x >= a || y < 0 || y >= b || MAP(x, y) != '0') return;
MAP(x, y) = '*'; // Mark as visited
dfs(x + 1, y); dfs(x - 1, y); dfs(x, y + 1); dfs(x, y - 1);
}
int main() {
scanf("%d %d\n", &a, &b);
char vla[a * b];
map = vla;
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) MAP(i, j) = getchar();
getchar(); // Skip newline
}
// Mark all spaces reachable from edges (flooded areas)
for (int i = 0; i < a; i++) {
dfs(i, 0); dfs(i, b - 1);
}
for (int j = 0; j < b; j++) {
dfs(0, j); dfs(a - 1, j);
}
// Count remaining empty spaces (safe areas)
int count = 0;
for (int i = 0; i < a; i++)
for (int j = 0; j < b; j++)
if (MAP(i, j) == '0') count++;
printf("%d\n", count);
return 0;
}
#牛客AI配图神器#