// Counting Rooms #include using namespace std; void dfs(vector>>> &m, pair s, vector> &v) { v[s.first][s.second] = true; for (auto e: m[s.first][s.second]) { if (!v[e.first][e.second]) dfs(m, e, v); } } int main() { int n, m; cin >> n >> m; // map, vector>> map1; vector>>> map1(n, vector>>(m)); vector in; for (int i{}; i < n; i++) { string s; cin >> s; in.push_back(s); } for (int i{}; i < n; i++) { for (int j{}; j < m; j++) { if (in[i][j] == '#') continue; if (i > 0 && in[i-1][j] == '.') map1[i][j].push_back({i-1, j}); if (i < n - 1 && in[i+1][j] == '.') map1[i][j].push_back({i+1, j}); if (j > 0 && in[i][j-1] == '.') map1[i][j].push_back({i, j-1}); if (j < m - 1 && in[i][j+1] == '.') map1[i][j].push_back({i, j+1}); } } // set> v; vector> v(n, vector(m, false)); int count = 0; for (int i{}; i < n; i++) { for (int j{}; j < m; j++) { if (in[i][j] == '#') continue; if (v[i][j]) continue; count++; dfs(map1, {i, j}, v); } } cout << count << endl; return 0; }