Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: faofao

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

Language: cpp

Time: 0.005 second

Submitted On: 2026-03-13 11:59:21

#include <bits/stdc++.h>
using namespace std;
int n,m ;
int grid[171][171] ;
bool vis[171][171] ;
int di[] = {-1,0,0,1} ;
int dj[] = {0,-1,1,0} ;
int ct = 0;
int mx=0 ;

void dfs(int i,int j){
    grid[i][j] = 0;
    ct++ ;
    for(int k=0 ; k<4 ; k++){
        int ni = i+di[k] ;
        int nj = j+dj[k] ;
        if(grid[ni][nj] == 0 || ni<0 || ni>=n || nj<0 || nj>=m) continue;
        dfs(ni,nj) ;
    }
}

int main(){
    ios::sync_with_stdio(0),cin.tie(0) ;
    cin >> n >> m ;
    for(int i=0 ; i<n ; i++){
        string s ; cin >> s ;
        for(int j=0 ; j<m ; j++){
            grid[i][j] = s[j]-'0';
        }
    }
    for(int i=0 ; i<n ; i++){
        for(int j=0 ; j<m ; j++){
            if(grid[i][j] == 0) continue;
            ct=0 ;
            dfs(i,j) ;
            mx = max(mx,ct) ;
        }
    }
    cout << mx ;
}