mx = max(mx, area); 오랜만에 푸니까 자꾸 까먹는데 꼭 기억해두자!
굉장히 쉬운 bfs 문제인듯하다.
빠르게 짜다가 dx dy를 자꾸 dx dx로 쓰는데 조심해서 짜자!
#include <iostream>
#include <queue>
#define X first
#define Y second
using namespace std;
int board[505][505];
int vis[505][505];
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
int n, m;
queue<pair<int, int>> Q;
int main()
{
cin >> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> board[i][j];
}
}
int mx = 0;
int num = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(board[i][j] == 1 && vis[i][j] == 0){
num++;
queue <pair<int, int>> Q;
int area = 0;
vis[i][j] = 1;
Q.push({i, j});
while(!Q.empty()){
area++;
auto cur = Q.front(); Q.pop();
for(int i = 0; i < 4; i++){
int nx = cur.X + dx[i];
int ny = cur.Y + dy[i];
if (nx < 0 || ny < 0 || nx >= n || ny >= m) continue;
if(vis[nx][ny] == 1 || board[nx][ny] == 0) continue;
vis[nx][ny] = 1;
Q.push({nx, ny});
}
}
//if(mx <= area) mx = area;
mx = max(mx, area)
}
}
}
cout << num << " " << mx;
return 0;
}
'PS' 카테고리의 다른 글
[C++] 백준 4179번: 불! (0) | 2024.10.27 |
---|---|
[C++] 백준 7576번: 토마토 (0) | 2024.10.26 |
[C++] 백준 2178번: 미로 탐색 (0) | 2024.10.25 |
[C++] 배열 안의 두 수의 합이 100이 되는 짝 찾기를 O(N)에 계산하기 (0) | 2024.10.22 |
[C++] 백준 10808번: 알파벳 개수 (0) | 2024.10.22 |