728x90
반응형
https://www.youtube.com/watch?v=7C9RgOcvkvo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3
#include <bits/stdc++.h>
using namespace std;
int n, m;
int graph[1001][1001];
bool dfs(int x, int y){
// 주어진 범위를 벗어나는 경우 즉시 종료
if(x<=-1 || x>=n || y<=-1 || y>=m){
return false;
}
// 현재 노드를 아직 방문하지 않았다면
if(graph[x][y] == 0){
// 해당 노드 방문 처리
graph[x][y] = 1;
// 상하좌우 위치들도 모두 재귀적으로 호출
dfs(x-1, y);
dfs(x, y-1);
dfs(x+1, y);
dfs(x, y+1);
return true;
}
return false;
}
int main(void) {
cin >> n >> m;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
scanf("%1d",&graph[i][j]);
}
}
// 모든 노드에 대하여 음료수 채우기
int result = 0;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
// 현재 위치에서 dfs 수행
if(dfs(i,j)){
result++;
}
}
}
cout << result << endl;
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/ DFS&BFS/ C++] 1260번 DFS와 BFS (0) | 2022.12.28 |
---|---|
[이코테/ DFS&BFS/ C++] 미로탈출 (0) | 2022.12.28 |
[이코테/DFS&BFS/C++] DFS & BFS 기초 설명 및 예제 (0) | 2022.12.28 |
[백준/DP/C++] 11052번 카드 구매하기 (0) | 2022.12.28 |
[백준/DP/C++] 11053번 가장 긴 증가하는 부분 수열 (0) | 2022.12.28 |