첫 DFS 문제!
일단 이차원 배열에 그래프를 정의해주고,
그 다음에 dfs 함수를 구현하고, 시작 노드를 dfs에 넣어 완전탐색을 시킨다.
#include <iostream>
#include <vector>
int answer = 0;
void dfs(int x, int vertex, int edge, int** graph, int* visited) {
visited[x] = 1;
for (int i = 1; i <= vertex; i++) {
if (graph[x][i] == 1 && !visited[i]) {
answer++;
dfs(i, vertex, edge, graph, visited);
}
}
}
int main() {
int vertex, edge;
std::cin >> vertex;
std::cin >> edge;
int** graph = new int*[vertex+1];
int* visited = new int[vertex+1];
for (int i = 0; i < vertex+1; i++) {
graph[i] = new int[vertex+1];
visited[i] = 0;
}
for (int i = 0; i < vertex + 1; i++) {
for (int j = 0; j < vertex + 1; j++) {
graph[i][j] = -1;
}
}
for (int i = 0; i < edge; i++) {
int x, y;
std::cin >> x >> y;
graph[x-1][y-1] = graph[y-1][x-1] = 1;
}
dfs(0, vertex, edge, graph, visited);
std::cout << answer << std::endl;
return 0;
}
'Computer Science > C++' 카테고리의 다른 글
백준 C++ | #28 BOJ15649 N와 M(1) C++ 문제 풀이 (0) | 2022.09.04 |
---|---|
백준 C++ | #28 BOJ9663 N-Queen (백트래킹 알고리즘) C++ 문제 풀이 (0) | 2022.09.03 |
백준 C++ | #27 BOJ1620 나는야 포켓몬 마스터 이다솜 C++ 문제 풀이 (0) | 2022.09.02 |
백준 C++ | #26 BOJ2358 평행선 C++ 문제 풀이 (0) | 2022.09.01 |
백준 C++ | #25 BOJ2257 화학식량 C++ 문제 풀이 (0) | 2022.09.01 |