Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: klalnwza007

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

Language: cpp

Time: 0.003 second

Submitted On: 2025-11-05 22:55:55

/*
8 13
0010000100000
0000000111000
0110100000000
0100110010100
0100110011100
0000000000100
0000000111000
0000000110000
*/

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

int n, m, cnt;
int di[] = {0, 0, 1, -1};
int dj[] = {1, -1, 0, 0};
vector<string> grid;
vector<vector<bool>> vis;

void dfs(int i, int j) {
    vis[i][j] = true;
    cnt++;
    for (int k = 0; k < 4; k++) {
        int ni = i + di[k];
        int nj = j + dj[k];
        if (ni >= 0 && ni < n && nj >= 0 && nj < m) {
            if (!vis[ni][nj] && grid[ni][nj] == '1')
                dfs(ni, nj);
        }
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> m;
    grid.resize(n);
    vis.assign(n, vector<bool>(m, false));

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

    int mx = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (!vis[i][j] && grid[i][j] == '1') {
                cnt = 0;
                dfs(i, j);
                mx = max(mx, cnt);
            }
        }
    }

    cout << mx;
}