Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: amongus

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-03-07 14:30:34

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f first
#define s second
char a[505][505];
int v[505][505] , pr[] ={0,-1,0,1} , pc[] = {-1,0,1,0} ,n,m,cnt,ans;

void dfs(int nowr , int nowc){
    cnt++;
    v[nowr][nowc] =1;
    for(int i=0;i<=3;i++){
        int nr = nowr+pr[i] ;
        int nc= nowc+pc[i];
        if(nr<1 || nr>n || nc<1 || nc>m)
            continue;

        if(v[nr][nc]==1 || a[nr][nc]=='0')
            continue;
        dfs(nr,nc);
    }

}

int main(){

    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            scanf(" %c",&a[i][j]);



    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            if(a[i][j] =='1' && v[i][j]==0){
                cnt =0;
                dfs(i,j);
                ans = max(ans,cnt);
            }

        }

            printf("%d",ans);
}