Submission

Status:

PPPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Pera

Problemset: ตั้งฐานทัพ

Language: cpp

Time: 0.016 second

Submitted On: 2025-09-24 10:51:16

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

static const int DR[8] = {-1,-1,-1,0,0,1,1,1};
static const int DC[8] = {-1,0,1,-1,1,-1,0,1};

int main() {
    ios::sync_with_stdio(false);

    int W, H; 
    if (!(cin >> W >> H)) return 0;

    vector<vector<char>> g(H, vector<char>(W));
    for (int i = 0; i < H; ++i)
        for (int j = 0; j < W; ++j)
            cin >> g[i][j];

    int ans = 0;
    queue<pair<int,int>> q;

    for (int r = 0; r < H; ++r) {
        for (int c = 0; c < W; ++c) {
            if (g[r][c] != '.') continue;
            g[r][c] = '*';
            q.push({r,c});
            int sz = 0;

            while (!q.empty()) {
                auto [x,y] = q.front(); q.pop();
                ++sz;
                for (int k = 0; k < 8; ++k) {
                    int nx = x + DR[k], ny = y + DC[k];
                    if (nx < 0 || nx >= H || ny < 0 || ny >= W) continue;
                    if (g[nx][ny] != '.') continue;
                    g[nx][ny] = '*';
                    q.push({nx,ny});
                }
            }
            ans = max(ans, sz);
        }
    }
    cout << ans << '\n';
    return 0;
}