https://www.acmicpc.net/problem/2606
그래프입력을 받고 DFS를 통해 순회하면서 시작노드를 제외하고 전역변수를 통해 카운트하면서 얼마나 순회하는지 계산하면 된다.
정답코드
#include <iostream>
#include <vector>
using namespace std;
void DFS(int node);
vector<vector<int>> computers;
vector<bool> visited;
int cnt = 0;
int main()
{
int n, m;
cin >> n >> m;
computers.resize(n + 1);
visited.resize(n + 1);
for (int i = 0; i < m; i++)
{
int u, v;
cin >> u >> v;
computers[u].push_back(v);
computers[v].push_back(u);
}
DFS(1);
cout << cnt << "\n";
}
void DFS(int node)
{
visited[node] = true;
for (int i : computers[node])
{
if (!visited[i])
{
cnt++;
DFS(i);
}
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]1012번. 유기농 배추 (2) | 2024.10.25 |
---|---|
[백준][C++]2667번. 단지번호 붙이기 (2) | 2024.10.25 |
[백준][C++]24480번. 알고리즘 수업 - 깊이 우선 탐색 2 (1) | 2024.10.25 |
[백준][C++]1916번. 최소 비용 구하기 (1) | 2024.10.24 |
[백준][C++]1753번. 최단경로 (0) | 2024.10.24 |