Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: tha_smith

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-03-07 14:14:51

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

int main() {
	ios_base::sync_with_stdio(0),cin.tie(0);
	ll N,M,yy[4]={-1,0,0,1},xx[4]={0,-1,1,0};
	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];
		}
	}
	vector<vector<bool>> vis(N,vector<bool>(M,0));
	ll ans=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 || ny<0 || nx>=N || ny>=M)
							continue;
						if(grid[nx][ny]=='0' || vis[nx][ny])
							continue;
						vis[nx][ny]=1;
						q.push({nx,ny});
						cnt++;
					}
				}
				ans = max(ans,cnt);
			}
		}
	}
	cout << ans;
}