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);
}