Submission

Status:
-------xxxx

Score: 0

User: Dormon

Problemset: ออลสปาร์ค

Language: cpp

Time: 0.002 second

Submitted On: 2024-11-15 22:26:36

#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <functional>
#include <queue>

#define debug(...) Debug(#__VA_ARGS__, __VA_ARGS__)
using namespace std;

template<typename T>
typename std::enable_if<std::is_integral<T>::value>::type
Debug(const char* name, T value) {
    std::cout << name << " : " << value << '\n';
}

template<typename T, typename... Args>
typename std::enable_if<std::is_integral<T>::value>::type
Debug(const char* names, T value, Args... args) {
    const char* comma = strchr(names, ',');
    std::cout.write(names, comma - names) << " : " << value << " | ";
    Debug(comma + 1, args...);
}

vector<pair<int, int>> dir = {{-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}};

void solve(){
    int n, m; cin >> m >> n;
    vector<string> grid(n);

    for (int i = 0;i < n;i++)
        cin >> grid[i];

    auto invalid = [&](int i, int j) -> bool {
        return i < 0 || i >= n || j < 0 || j >= m || grid[i][j] == '#';
    };

    int ans = 0;
    for (int i = 0;i < n;i++){
        for (int j = 0;j < m;j++){
            if (grid[i][j] == '.'){
                queue<pair<int, int>> q;
                q.push({i, j});
                int cnt = 0;
                while (!q.empty()){
                    auto [i, j] = q.front(); q.pop();
                    if (grid[i][j] == '*') continue;
                    grid[i][j] = '*';
                    cnt++;
                    for (auto [di, dj]:dir){
                        int ii = i+di, jj = j+dj;
                        if (invalid(ii, jj)) continue;
                        q.push({ii, jj});
                    }
                }
                ans = max(ans, cnt);
            }
        }
    }
    cout << ans << '\n';
}

int main()
{
    int q = 1; 
    //cin >> q;
    while (q--){
        solve();
    }
}