Submission

Status:

[PPPPPP-SSSSSSSSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: boss

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

Language: cpp

Time: 0.003 second

Submitted On: 2026-02-01 10:21:09

#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};
bool up=false;
bool down=false;
bool l=false;
bool r=false;
int main()
{
	int m,n;
	cin>>m>>n;
	int count=0;
	queue<pair<int,int>> q;
	vector<int> mx(10000);
	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);
			{

				q.push({i,j});
				vis[i][j]=true;
				down=false;
				up=false;
				r=false;
				l=false;
				while(!q.empty())
				{
//					cout<<'h';
					int x=q.front().first;
					int y=q.front().second;
					q.pop();
					
					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[count]++;//area
						
						}
					}
				}
				count++;
			}
		}
	}
	sort(mx.begin(),mx.end());
	cout<<mx.back();
	
	return 0;
}