Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: tha_smith

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

Language: cpp

Time: 0.003 second

Submitted On: 2026-02-27 14:31:35

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

int main() {
	ios_base::sync_with_stdio(0),cin.tie(0);
	ll yy[4] = {-1,0,0,1};
	ll xx[4] = {0,-1,1,0};
	ll N,M;
	cin >> N >> M;
	vector<vector<char>> grid(N,vector<char>(M));
	for(ll i=0; i<N; i++) {
		for(ll j=0; j<M; j++) {
			cin >> grid[i][j];
		}
	}
	ll ans=0;
	vector<vector<bool>> vis(N,vector<bool>(M,0));
	for(ll i=0; i<N; i++) {
		for(ll j=0; j<M; j++) {
			if(!vis[i][j] && grid[i][j]=='1') {
				vis[i][j]=1;
				queue<pair<ll,ll>> q;
				q.push({i,j});
				ll cnt=1;
				
				while(!q.empty()) {
					auto[x,y] = q.front();
					q.pop();
					for(int k=0; k<4; k++) {
						ll nx = x+xx[k];
						ll ny = y+yy[k];
						if(nx<0 || nx>=N || ny<0 || ny>=M)
							continue;
						if(vis[nx][ny] || grid[nx][ny]=='0')
							continue;
						vis[nx][ny] = 1;
						q.push({nx,ny});
						cnt++;
					}
				}
				ans = max(ans,cnt);
			}
		}
	}
	cout << ans;
}