Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: kavin8888

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

Language: cpp

Time: 0.005 second

Submitted On: 2025-11-08 09:12:56

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt;
vector<string> board;
vector<vector<bool>> vis;
bool valid(int x,int y) {
	return 0<=x && x<n && 0<=y && y<m;
}
void dfs(int x,int y) {
	vis[x][y]=true;
	cnt++;
	if(valid(x-1,y) && !vis[x-1][y] && board[x-1][y]=='1') {
		dfs(x-1,y);
	}
	if(valid(x+1,y) && !vis[x+1][y] && board[x+1][y]=='1') {
		dfs(x+1,y);
	}
	if(valid(x,y-1) && !vis[x][y-1] && board[x][y-1]=='1') {
		dfs(x,y-1);
	}
	if(valid(x,y+1) && !vis[x][y+1] && board[x][y+1]=='1') {
		dfs(x,y+1);
	}
}
int main() {
	cin>>n>>m;
	board.resize(n);
	vis.assign(n,vector<bool> (m,false));
	for(int i=0;i<n;i++) cin>>board[i];
	int ans=0;
	for(int i=0;i<n;i++) {
		for(int j=0;j<m;j++) {
			if(!vis[i][j] && valid(i,j) && board[i][j]=='1') {
				cnt=0;
				dfs(i,j);
				ans=max(ans,cnt);
			}
		}
	}
	cout<<ans<<'\n';
	return 0;
}