Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: syndrxme
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-14 09:46:49
#include<bits/stdc++.h>
using namespace std;
int dr[] = {-1,1,0,0};
int dc[] = {0,0,-1,1};
int n,m;
int dfs(int r, int c, vector<vector<int>>& grid){
int cou=1;
grid[r][c]=0;
for(int i=0;i<4;i++){
int nr=r+dr[i];
int nc =c+dc[i];
if(nr>=0 && nr<n && nc>=0 && nc<m && grid[nr][nc]==1){
cou+=dfs(nr,nc,grid);
}
}
return cou;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
vector<vector<int>> grid(n,vector<int>(m));
for(int i=0;i<n;i++){
string s;
cin>>s;
for(int j=0;j<m;j++){
grid[i][j] = s[j]-'0';
}
}
int mx=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]==1){
queue<pair<int,int>> q;
int cal=0;
q.push({i,j});
grid[i][j]=0;
while(q.empty()==false){
auto t = q.front();
q.pop();
cal++;
int r= t.first;
int c = t.second;
for(int k=0;k<4;k++){
int nr = r+ dr[k];
int nc = c+dc[k];
if(nr>=0 && nr<n && nc>=0 && nc<m && grid[nr][nc]==1){
q.push({nr,nc});
grid[nr][nc]=0;
}
}
}
mx = max(cal,mx);
}
}
}
cout<<mx;
// cout<<dfs(0,2,grid);
return 0;
}