Submission
Status:
PPPPPPxxxxx
Subtask/Task Score:
60/100
Score: 60
User: Pera
Problemset: ตั้งฐานทัพ
Language: cpp
Time: 0.030 second
Submitted On: 2025-09-24 10:47:30
#include <bits/stdc++.h>
using namespace std;
int dfs(int row, int column, vector<vector<char>>& grid) {
// return if out of area
if (row < 0 || row >= grid.size() || column < 0 || column >= grid[0].size()) return 0;
// return if not dot
if (grid[row][column] != '.') return 0;
int dr[8]={-1,-1,-1,0,0,1,1,1};
int dc[8]={-1,0,1,-1,1,-1,0,1};
// mark as visited
grid[row][column] = '*';
// cout << "Visiting " << row << " " << column << " And added +1 to currarea which is currently " << currarea << "\n";
int currarea = 1;
for (int i = 0; i < 8; i++) {
currarea += dfs(row + dr[i], column + dc[i], grid);
}
return currarea;
}
int main() {
ios_base::sync_with_stdio(false);
int width, height; cin >> width >> height;
vector<vector<char>> grid(height, vector<char>(width));
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
cin >> grid[i][j];
}
}
int maxarea = 0;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
maxarea = max(maxarea, dfs(i, j, grid));
}
}
cout << maxarea << "\n";
}