Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: devilpoohs

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

Language: cpp

Time: 0.003 second

Submitted On: 2026-03-06 12:06:01

#include<bits/stdc++.h>
using namespace std;
int di[4]={0,0,1,-1};
int dj[4]={1,-1,0,0};
int n,m;
bool vis[171][171];
int dfs(int i,int j){
    // cout<<'a';
    vis[i][j]=true;
    int cnt=1;
    for(int k=0;k<4;k++){
        int ni=i+di[k];
        int nj=j+dj[k];
        // cout<<k<<','<<di[k]<<','<<dj[k]<<'\n';
        if(ni>=0 and nj>=0 and ni<n and nj<m and vis[ni][nj]==false){
            cnt+=dfs(ni,nj);
        }
    }
    return cnt;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            char a;
            cin>>a;
            vis[i][j]=1^(a-'0');
        }
    }  
    int ans=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            // if(vis[i][j]==true){
            //     cout<<'1';
            // }else cout<<'0';
            if(!vis[i][j]){
                // cout<<i<<','<<j<<'\n';
                ans=max(ans,dfs(i,j));
                // cout<<'\n';
            } 
            
        }
        // cout<<'\n';
    }  
    cout<<ans;
    return 0;
}
/*
4 4
0011
0000
0111
1100


*/