728x90
0. [c++] 백준 |
https://www.acmicpc.net/problem/1012
1. 풀이 |
2. 소스코드 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include<iostream> #include<cstring> using namespace std; int arr[50][50]; int ret = 0; int T, N, M, K, X, Y; void dfs(const int& x, const int& y) { arr[x][y] = ret; if (x > 0 && arr[x - 1][y] == -1) dfs(x - 1, y); if (x < M - 1 && arr[x + 1][y] == -1) dfs(x + 1, y); if (y > 0 && arr[x][y - 1] == -1) dfs(x, y - 1); if (y < N - 1 && arr[x][y + 1] == -1) dfs(x, y + 1); } int main() { cin >> T; for (int i = 0; i < T; i++) { //배열을 0으로 초기화 memset(arr, 0, sizeof(arr)); // ret = 0; cin >> M >> N >> K; for (int j = 0; j < K; j++) { cin >> X >> Y; arr[X][Y] = -1; } for(int x=0;x<M;x++) for(int y=0;y<N;y++) if (arr[x][y] == -1) { ret++; dfs(x, y); } cout << ret << endl; } } | cs |
3. 참고 |
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > DFS와 BFS' 카테고리의 다른 글
[c++] 백준 13460 - 구슬 탈출 2 (0) | 2023.10.09 |
---|---|
[C++] 백준 2206 - 벽 부수고 이동하기(BFS) (0) | 2020.03.03 |
[C++] 백준 1697 - 숨바꼭질(BFS) (0) | 2020.03.03 |