핵심아이디어
전형적인 DFS문제라서 딱히 언급할 것이 없다.
연결된 모든간선에 대해 dfs를 수행하되, 방문처리를 한 노드는 방문하지 않으면 된다.
'use strict';
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const solution = function (input) {
const n = parseInt(input.shift());
const m = parseInt(input.shift());
const graph = [...new Array(n + 1)].map(() => []);
const visited = [...new Array(n + 1)].fill(0);
let cnt = 0;
for (const edge of input) {
const [start, dest] = edge.split(' ').map((elem) => parseInt(elem));
graph[start].push(dest);
graph[dest].push(start);
}
visited[1] = 1;
const dfs = (start) => {
for (const dest of graph[start]) {
if (!visited[dest]) {
visited[dest] = 1;
cnt++;
dfs(dest);
}
}
};
dfs(1);
console.log(cnt);
};
const input = [];
rl.on('line', function (line) {
input.push(line);
}).on('close', function () {
solution(input);
process.exit();
});
'개발 > 알고리즘' 카테고리의 다른 글
[Javascript][BOJ] 1012 유기농 배추 (0) | 2020.12.06 |
---|---|
[Javascript][BOJ] 2667 단지번호 붙이기 (0) | 2020.12.05 |
[Javascript][BOJ] 14950 정복자 (0) | 2020.12.05 |
[Javascript][BOJ] 10423 전기가 부족해 (0) | 2020.12.05 |
[Javascript][BOJ] 1766 문제집 (위상정렬/우선순위 큐) (0) | 2020.12.03 |