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