Submission

Status:
PPPPPPPP

Score: 100

User: Pera

Problemset: Sirabyrinth 2

Language: cpp

Time: 0.002 second

Submitted On: 2025-03-27 10:11:17

#include <bits/stdc++.h>
using namespace std;

int dfs(vector<vector<char>>& grid, int row, int column) {

    if (row < 0 || row >= grid.size() || column < 0 || column >= grid[0].size()) return 0;
    // base case
    if (grid[row][column] == '#') return 0;

    grid[row][column] = '#';
    int size = 1;

    size += dfs(grid, row + 1, column);
    size += dfs(grid, row - 1, column);
    size += dfs(grid, row, column + 1);
    size += dfs(grid, row, column - 1);

    return size;
}   

int roomsize(vector<vector<char>>& grid) {
    int size{0};
    for (int i = 0; i < grid.size(); ++i) {
        for (int j = 0; j < grid[0].size(); ++j) {
            if (grid[i][j] == 'S') {
                size = dfs(grid, i, j);
                break;
            }
        }
    }

    return size;
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    int n, m; cin >> n >> m;
    vector<vector<char>> grid(n, vector<char>(m));
    for (int i = 0; i < n; ++i) {
        string str; cin >> str;
        for (int j = 0; j < m; ++j) {
            grid[i][j] = str[j];
        }
    }

    cout << roomsize(grid) << '\n';
}