Submission

Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]

Score: 100

User: mydKN

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

Language: cpp

Time: 0.004 second

Submitted On: 2025-03-31 00:11:17

#include<bits/stdc++.h>

using namespace std;

using pii = pair<int, int>;

const int maxn = 180;
const int di[] = {0, 0, -1, 1};
const int dj[] = {1, -1, 0, 0};

int n, m;
bool mp[maxn][maxn];
vector<pii> vec;
queue<pii> qu;
int res = 0;

int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);
	cin >> n >> m;
	for(int i=0;i<n;++i){
		for(int j=0;j<m;++j){
			char x;
			cin >> x;
			mp[i][j] = (x - '0');
			if(mp[i][j]) vec.emplace_back(i, j);
		}
	}
	for(auto e : vec){
		if(!mp[e.first][e.second]) continue;
		qu.emplace(e.first, e.second);
		int cnt = 0;
		while(!qu.empty()){
			auto [ui, uj] = qu.front();
			qu.pop();
			if(!mp[ui][uj]) continue;
			mp[ui][uj] = 0;
			++cnt;
			for(int i=0;i<4;++i){
				int vi = ui + di[i];
				int vj = uj + dj[i];
				if(vi >= 0 && vj >= 0 && vi < n && vj < m && mp[vi][vj]){
					qu.emplace(vi, vj);
				}
			}
		}
		// for(int i=0;i<n;++i){
		// 	for(int j=0;j<m;++j){
		// 		cout << mp[i][j];
		// 	}
		// 	cout << "\n";
		// }
		// cout << cnt << "\n";
		res = max(res, cnt);
	}
	cout << res;
}