Submission

Status:

PPPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: klalnwza009

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

Language: cpp

Time: 0.024 second

Submitted On: 2026-10-15 02:43:14


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

using pii = pair<int,int>;
int di[] = {0,0,1,-1 ,1,1,-1,-1};
int dj[] = {1,-1,0,0, 1,-1,1,-1};

char v[2020][2020];
bool vis[2020][2020];

queue <pii> q;

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

    int n,m; cin >> m >> n;

    for (int i=1;i<=n;i++) {
        for (int j=1;j<=m;j++) {
            cin >> v[i][j];
        }
    }
    int cnt=0,ans=0;;
    for (int i=1;i<=n;i++) {
        for (int j=1;j<=m;j++) {
            if (v[i][j] == '.' && !vis[i][j]) q.push({i,j}),vis[i][j] = 1,cnt=0;
            while (!q.empty()) {
                auto [i,j] = q.front();q.pop();

                cnt++;

                for (int k=0;k<8;k++) {
                    int ni = i + di[k];
                    int nj = j + dj[k];

                    if (ni < 1 || nj < 1 || ni > n || nj > m) continue;
                    if (vis[ni][nj] || v[ni][nj] == '*') continue;

                    vis[ni][nj] = 1;
                    q.push({ni,nj});
                }
            }
            ans = max (ans,cnt);
        }
    }
    cout << ans;

}