Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Poon

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

Language: cpp

Time: 0.005 second

Submitted On: 2026-03-15 16:59:04

#include <bits/stdc++.h>
using namespace std;

int main() 
{
  int n,m;
  cin>>n>>m;
  vector<vector<bool>> grid(n,vector<bool>(m));
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {
      char c;
      cin>>c;
      grid[i][j]=c-'0';
    }
  }
  vector<vector<int>> visited(n,vector<int>(m,-1));
  int index=0;
  stack<pair<int,int>> s;
  int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {
      if(grid[i][j]&&visited[i][j]==-1)
      {
        visited[i][j]=index;
        s.push({i,j});
        while(!s.empty())
        {
          int ii=s.top().first,jj=s.top().second;
          s.pop();
          for(int k=0;k<4;k++)
          {
            int iii=ii+dx[k],jjj=jj+dy[k];
            if(iii>=0&&jjj>=0&&iii<n&&jjj<m&&grid[iii][jjj]&&visited[iii][jjj]==-1)
            {
              s.push({iii,jjj});
              visited[iii][jjj]=index;
            }
          }
        }
        index++;
      }
    }
  }
  vector<int> freq(index,0);
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {
      if(visited[i][j]!=-1)
      {
        freq[visited[i][j]]++;
      }
    }
  }
  int maxx=0;
  for(auto x : freq)
  {
    maxx=max(maxx,x);
  }
  cout<<maxx;
}