Submission

Status:

PPPPPPxxxxx

Subtask/Task Score:

60/100

Score: 60

User: purihorharin

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

Language: c

Time: 0.025 second

Submitted On: 2026-03-19 23:02:23

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

int ncol, nrow;

int dfs (int r, int c, char (*map)[ncol+1], bool (*visited)[ncol]) {
    if (r < 0 || r >= nrow || c < 0 || c >= ncol) return 0;
    else if (map[r][c] != '.') return 0;
    else if (visited[r][c]) return 0;
    
    visited[r][c] = true;
    return (
        +dfs(r-1, c-1, map, visited)
        +dfs(r-1, c, map, visited)
        +dfs(r-1, c+1, map, visited)
        +dfs(r, c-1, map, visited)
        +dfs(r, c+1, map, visited)
        +dfs(r+1, c-1, map, visited)
        +dfs(r+1, c, map, visited)
        +dfs(r+1, c+1, map, visited)
        +1
    );
}

int main () {
    scanf("%d%d", &ncol, &nrow);
    char map[nrow][ncol+1];
    bool visited[nrow][ncol];
    memset(visited, 0, nrow * ncol);
    getchar();
    fread(map, ncol+1, nrow, stdin);

    int max = 0;
    for (int r = 0; r < nrow; r++) {
        for (int c = 0; c < ncol; c++) {
            int result = dfs(r, c, map, visited);
            if (result > max) {
                max = result;
            }
        }
    }
    printf("%d", max);
}