Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: syndrxme
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-14 09:47:34
#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);
mx = max(mx,dfs(i,j,grid));
}
}
}
cout<<mx;
// cout<<dfs(0,2,grid);
return 0;
}