Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: sulinx

Problemset: เกาะที่ใหญ่ที่สุด

Language: cpp

Time: 0.005 second

Submitted On: 2026-02-18 21:42:56

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

int dfs(vector<vector<int>>& grid, vector<vector<bool>>& visited, int r, int c) {
        int rows = grid.size(), cols = grid[0].size();
        if (r < 0 || r >= rows || c < 0 || c >= cols || visited[r][c] || grid[r][c] == 0) {
            return 0;
        }

        visited[r][c] = true;
        return 1 + dfs(grid, visited, r + 1, c) + dfs(grid, visited, r - 1, c)
                 + dfs(grid, visited, r, c + 1) + dfs(grid, visited, r, c - 1);
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,m;
    int maxarea = 0;
    string tmp;
    cin >> n >> m;
    vector<vector<int>> grid(n,vector<int>(m));
    vector<vector<bool>> visited(n,vector<bool>(m));
    for(int i = 0;i<n;i++){
        cin >> tmp;
        for(int j = 0;j<m;j++){
            grid[i][j] = tmp[j] - '0';
        }
    }

    for(int i = 0;i<n;i++){
        for(int j = 0;j<m;j++){
            if(grid[i][j] == 1 && !visited[i][j]){
                maxarea = max(maxarea,dfs(grid,visited,i,j));
            }
        }
    }
    cout << maxarea;
}