Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPP-S]
Subtask/Task Score:
{0/100}
Score: 0
User: boss
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.004 second
Submitted On: 2026-02-01 10:36:48
#include<bits/stdc++.h>
using namespace std;
bool vis[500+5][500+5];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int main()
{
int m,n;
cin>>n>>m;
int count=0;
queue<pair<int,int>> q;
int mx=0;
char arr[n+5][m+5];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>arr[i][j];
}
}
//----------------------------
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(arr[i][j]=='1'&&vis[i][j]==false);
{
count=0;
q.push({i,j});
vis[i][j]=true;
while(!q.empty())
{
// cout<<'h';
count++;
int x=q.front().first;
int y=q.front().second;
q.pop();
// mx[count]++;
for(int k=0;k<4;k++)
{
int xx=x+dx[k];
int yy=y+dy[k];
if(xx<0||yy<0||xx>n-1||yy>m-1||vis[xx][yy]==true)
{
continue;
}
if(arr[xx][yy]=='1'&&vis[xx][yy]==false)
{
q.push({xx,yy});
vis[xx][yy]=true;
}
}
}
mx=max(mx,count);
}
}
}
cout<<mx-1;
return 0;
}