Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int n, m;
- char grid[1001][1001];
- bool visited[1001][1001];
- int dx[] = {-1, 1, 0, 0};
- int dy[] = {0, 0, 1, -1};
- int ans;
- void dfs(int x, int y){
- if(visited[x][y] || x<0 || x>n-1 || y<0 || y>m-1){
- return;
- }
- //cout << "x: " << x << ", y: " << y << '\n';
- visited[x][y] = true;
- for(int i=0; i<4; i++){
- int nx = x+dx[i];
- int ny = y+dy[i];
- //cout << "nx: " << nx << ", ny: " << ny << '\n';
- if(!visited[nx][ny] && nx>=0 && nx<=n-1 && ny>=0 && ny<=m-1 && grid[nx][ny] == '.'){
- dfs(nx, ny);
- }
- }
- }
- int main(){
- //freopen("rooms.in", "r", stdin);
- cin >> n >> m;
- string s;
- for(int i=0; i<n; i++){
- cin >> s;
- for(int j=0; j<m; j++){
- grid[i][j] = s[j];
- //if(grid[i][j] == '.') cout << " ";
- //cout << grid[i][j];
- }
- //cout << '\n';
- }
- for(int i=0; i<n; i++){
- for(int j=0; j<m; j++){
- if(!visited[i][j] && grid[i][j] == '.'){
- //cout << "i: " << i << ", j: " << j << ", grid[i][j]: " << grid[i][j] << '\n';
- ans++;
- dfs(i, j);
- }
- }
- }
- cout << ans << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement