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';
}