Submission

Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]

Score: 100

User: Pera

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

Language: cpp

Time: 0.005 second

Submitted On: 2025-03-26 11:16:14

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

int dfs(vector<vector<int>>&grid, int rstart, int cstart) {

    if (rstart < 0 || rstart >= grid.size() || cstart < 0 || cstart >= grid[0].size()) return 0;

    // Base case
    if (grid[rstart][cstart] == 0) return 0;

    grid[rstart][cstart] = 0;
    int size = 1;

    size += dfs(grid, rstart + 1, cstart);
    size += dfs(grid, rstart - 1, cstart);
    size += dfs(grid, rstart, cstart + 1);
    size += dfs(grid, rstart, cstart - 1);

    return size;
}

int largestisland(vector<vector<int>>& grid, int n, int m) {

    int maxn = 0;

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (grid[i][j] == 1) {
                maxn = max(dfs(grid, i, j), maxn);
            }
        }
    }
    return maxn;
}

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

    int n, m; cin >> n >> m;
    vector<vector<int>> grid(n, vector<int>(m));

    for (int i = 0; i < n; ++i) {
        string line; cin >> line;
        for (int j = 0; j < m; ++j) {
            grid[i][j] = line[j] - '0';
        }
    }

    cout << largestisland(grid, n, m) << '\n';
}