https://www.acmicpc.net/problem/1926
๋ฌธ์
์ด๋ค ํฐ ๋ํ์ง์ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์์ ๋, ๊ทธ ๊ทธ๋ฆผ์ ๊ฐ์์, ๊ทธ ๊ทธ๋ฆผ ์ค ๋์ด๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ. ๋จ, ๊ทธ๋ฆผ์ด๋ผ๋ ๊ฒ์ 1๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ํ ๊ทธ๋ฆผ์ด๋ผ๊ณ ์ ์ํ์. ๊ฐ๋ก๋ ์ธ๋ก๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ด๊ณ ๋๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ ๋จ์ด์ง ๊ทธ๋ฆผ์ด๋ค. ๊ทธ๋ฆผ์ ๋์ด๋ ๊ทธ๋ฆผ์ ํฌํจ๋ 1์ ๊ฐ์์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ํ์ง์ ์ธ๋ก ํฌ๊ธฐ n(1 ≤ n ≤ 500)๊ณผ ๊ฐ๋ก ํฌ๊ธฐ m(1 ≤ m ≤ 500)์ด ์ฐจ๋ก๋ก ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ n+1 ์ค ๊น์ง ๊ทธ๋ฆผ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. (๋จ ๊ทธ๋ฆผ์ ์ ๋ณด๋ 0๊ณผ 1์ด ๊ณต๋ฐฑ์ ๋๊ณ ์ฃผ์ด์ง๋ฉฐ, 0์ ์์น ์ด ์๋ ๋ถ๋ถ, 1์ ์์น ์ด ๋ ๋ถ๋ถ์ ์๋ฏธํ๋ค)
์ถ๋ ฅ
์ฒซ์งธ ์ค์๋ ๊ทธ๋ฆผ์ ๊ฐ์, ๋์งธ ์ค์๋ ๊ทธ ์ค ๊ฐ์ฅ ๋์ ๊ทธ๋ฆผ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ. ๋จ, ๊ทธ๋ฆผ์ด ํ๋๋ ์๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ฅ ๋์ ๊ทธ๋ฆผ์ ๋์ด๋ 0์ด๋ค.
ํ์ด
BFS ๊ธฐ๋ณธ ํ์ ์ธ์๋๋ ์ต๊ด์ ๊ฐ์ง์
https://www.youtube.com/watch?v=ftOmGdm95XI&list=PLtqbFd2VIQv4O6D6l9HcD732hdrnYb6CY&index=10
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <queue>
using namespace std;
int board[502][502];
int vis[502][502];
int biggest, num; // ๊ฐ๊ฐ ๊ทธ๋ฆผ์ ์ต๋ ๋์ด์ ๊ทธ๋ฆผ์ ๊ฐฏ์
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
int main() {
// ์
๋ ฅ
int n,m;
cin >> n >> m;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> board[i][j];
}
}
// ๊ณ์ฐ
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(board[i][j] == 0 || vis[i][j] == 1) continue; // ๊ทธ๋ฆผ์ด ์๋๊ฑฐ๋ ๋ฐฉ๋ฌธ์ด ์ด๋ฏธ ๋์์ผ๋ฉด ํจ์ค
num++; // ๊ทธ๋ฆผ ๊ฐฏ์ ์ฆ๊ฐ
queue<pair<int, int>> q;
vis[i][j] = 1; // ๋ฐฉ๋ฌธ ํ์
q.push({i,j});
int area = 0;
while(!q.empty()){
area++;
pair<int, int> current = q.front();
q.pop();
for(int dir=0; dir<4; dir++) {
int x = current.first + dx[dir];
int y = current.second + dy[dir];
if(x < 0 || x >= n || y < 0 || y >= m) continue; // ์์ญ ๋ฐ์ผ๋ก ๋์ด๊ฐ๋ค๋ฉด ํจ์ค
if(vis[x][y] == 1 || board[x][y] == 0) continue; // ์ด๋ฏธ ๋ฐฉ๋ฌธ๋์๊ฑฐ๋ ๊ทธ๋ฆผ์ด ์๋๋ผ๋ฉด ํจ์ค
// ์กฐ๊ฑด์ ๋ง๋๋ค๋ฉด ๋ฐฉ๋ฌธ ํ์ ํ push
vis[x][y] = 1;
q.push({x,y});
}
}
if(biggest < area) biggest = area;
}
}
// ์ถ๋ ฅ
cout << num << '\n' << biggest;
return 0;
}
/*
*/
'๐ Baaaaaarking > 0x09๊ฐ - BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ G5][C++] ๋ฐฑ์ค 7569๋ฒ: ํ ๋งํ (0) | 2022.03.10 |
---|---|
[BOJ G5][C++] ๋ฐฑ์ค 7576๋ฒ: ํ ๋งํ (0) | 2022.03.09 |
[BOJ G5][C++] ๋ฐฑ์ค 10026๋ฒ: ์ ๋ก์์ฝ (0) | 2022.03.08 |
[BOJ S1][C++] ๋ฐฑ์ค 2178๋ฒ : ๋ฏธ๋ก ํ์ (0) | 2022.03.08 |
[BOJ S2][C++] ๋ฐฑ์ค 1012๋ฒ : ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.03.06 |