Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: 555eiei
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.003 second
Submitted On: 2025-11-05 18:46:25
#include <bits/stdc++.h>
using namespace std;
const pair<int, int> dir[4] = {{1,0}, {-1,0}, {0,-1}, {0,1}};
char grid[200][200];
bool visited[200][200];
int ans = 0;
int dfs(int n, int m, int r, int c){
visited[r][c] = true;
int sz = 1;
for (const auto &[i,j] : dir){
if (r+i < 1 || r+i > n || c+j < 1 || c+j > m) continue;
if (visited[r+i][c+j] || grid[r+i][c+j] == '0') continue;
sz += dfs(n,m,r+i,c+j);
}
return sz;
}
int main(){
cin.tie(nullptr)->sync_with_stdio(0);
int n,m; cin >> n >> m;
for (int i=1; i<=n; i++){
for (int j=1; j<=m; j++){
cin >> grid[i][j];
}
}
for (int i=1; i<=n; i++){
for (int j=1; j<=m; j++){
if (visited[i][j] || grid[i][j] == '0') continue;
ans = max(ans, dfs(n,m,i,j));
}
}
cout << ans;
return 0;
}