https://www.acmicpc.net/problem/14716
14716번: 현수막
혁진이의 생각대로 프로그램을 구현했을 때, 현수막에서 글자의 개수가 몇 개인지 출력하여라.
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int M, N;
int cnt = 0;
int map[251][251] = { 0 };
int visit[251][251] = { 0 };
void dfs(int y, int x) {
int direct[8][2] = {
-1,-1,
-1,0,
-1,1,
0,-1,
0,1,
1,-1,
1,0,
1,1
};
for (int i = 0; i < 8; i++) {
int dy = y + direct[i][0];
int dx = x + direct[i][1];
if (dy < 0 || dx < 0 || dy >= M || dx >= N)
continue;
if (visit[dy][dx] == 1)
continue;
if (map[dy][dx] == 1) {
visit[dy][dx] = 1;
dfs(dy, dx);
}
}
}
int main() {
ios_base::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL);
cin >> M >> N;
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
cin >> map[i][j];
}
}
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
if (map[i][j] == 1 && visit[i][j] != 1) {
dfs(i, j);
visit[i][j] = 1;
cnt++;
}
}
}
cout << cnt;
return 0;
}
'APS > 백준' 카테고리의 다른 글
[5052] 전화번호 목록 (0) | 2022.03.15 |
---|---|
[21924] 도시 건설 C++ (0) | 2022.03.05 |
[10816] 숫자 카드2 C++ (0) | 2022.03.03 |
[3745] 오름세 C++ (0) | 2022.03.02 |
[17245] 서버실 C++ (0) | 2022.02.21 |