https://www.acmicpc.net/problem/2606
let input = require("fs").readFileSync("/dev/stdin").toString().split("\n");
let node = Number(input[0]);
let edge_num = Number(input[1]);
let graph = [...new Array(node + 1)].map(() => []);
let visited = [...new Array(node + 1)].fill(0);
let ans = 0;
// 그래프 생성
for (let i = 0; i < edge_num; i++) {
let start = Number(input[i + 2].split(" ")[0]);
let end = Number(input[i + 2].split(" ")[1]);
graph[start].push(end);
graph[end].push(start);
}
// 1번노드 방문처리해주고 dfs 시작
visited[1] = 1;
function dfs(start) {
for (let end of graph[start]) {
if (!visited[end]) {
visited[end] = 1;
ans++;
dfs(end);
}
}
}
dfs(1);
console.log(ans);
✔ 알고리즘 : DFS
✔ 간선의 정보를 입력받아서 그래프를 생성
✔ 1번 노드부터 바이러스 걸리므로 visited[1] = 1
✔ 1번 노드를 dfs의 시작점으로 하여 dfs탐색
✔ 방문하지 않은 노드가 있으면 방문처리 후 ans 1증가
✔ 난이도 : 백준 기준 실버3