#include <iostream> #include <vector> using namespace std; int x, y; vector<vector<char>> g; vector<vector<bool>> v; int dx[] = {-1, 1, 0, 0}; int dy[] = {0, 0, -1, 1}; void dfs(int i, int j) { if (i < 0 || i >= x || j < 0 || j >= y) return; if (v[i][j] || g[i][j] == '*') return; v[i][j] = true; for (int k = 0; k < 4; k++) { dfs(i + dx[k], j + dy[k]); } } int main() { cin >> x >> y; g.resize(x, vector<char>(y)); v.resize(x, vector<bool>(y, false)); for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { cin >> g[i][j]; } } for (int i = 0; i < x; i++) { if (g[i][0] == '0' && !v[i][0]) dfs(i, 0); if (g[i][y-1] == '0' && !v[i][y-1]) dfs(i, y-1); } for (int j = 0; j < y; j++) { if (g[0][j] == '0' && !v[0][j]) dfs(0, j); if (g[x-1][j] == '0' && !v[x-1][j]) dfs(x-1, j); } int cnt = 0; for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { if (g[i][j] == '0' && !v[i][j]) { cnt++; } } } cout << cnt << endl; return 0; } /************************************************************** Problem: 1913 User: caizhihao Language: C++ Result: Accepted Time:28 ms Memory:2212 kb ****************************************************************/