Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: 555eiei

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

Language: cpp

Time: 0.003 second

Submitted On: 2025-11-05 18:46:25

#include <bits/stdc++.h>

using namespace std;

const pair<int, int> dir[4] = {{1,0}, {-1,0}, {0,-1}, {0,1}};
char grid[200][200];
bool visited[200][200];
int ans = 0;

int dfs(int n, int m, int r, int c){
    visited[r][c] = true;
    int sz = 1;
    for (const auto &[i,j] : dir){
        if (r+i < 1 || r+i > n || c+j < 1 || c+j > m) continue;
        if (visited[r+i][c+j] || grid[r+i][c+j] == '0') continue;
        sz += dfs(n,m,r+i,c+j);
    }
    return sz;
}

int main(){
    cin.tie(nullptr)->sync_with_stdio(0);
    int n,m; cin >> n >> m;
    for (int i=1; i<=n; i++){
        for (int j=1; j<=m; j++){
            cin >> grid[i][j];
        }
    }
    for (int i=1; i<=n; i++){
        for (int j=1; j<=m; j++){
            if (visited[i][j] || grid[i][j] == '0') continue;
            ans = max(ans, dfs(n,m,i,j));
        }
    }
    cout << ans;
    return 0;
}