티스토리 뷰
const readline = require("readline");
let arr = [];
let dfsVisited = [];
let bfsVisited = [];
let dfsResult = [];
let bfsResult = [];
let input = [];
// readline안에서는 배열을 let으로 선언
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => input.push(line.trim())).on("close", () => {
const [n, m, v] = input[0].split(" ").map(Number);
input = input.slice(1);
arr = Array.from(Array(n + 1), () => Array(n + 1).fill(0));
for (let i of input) {
let [x, y] = i.split(" ").map(Number);
arr[x][y] = arr[y][x] = 1;
}
//입력값
dfsVisited = new Array(n + 1).fill(false);
bfsVisited = new Array(n + 1).fill(false);
//방문한 기록 넣는 배열에 false로 값을 채워둠
bfs(v);
dfs(v);
console.log(dfsResult.join(" "));
console.log(bfsResult.join(" "));
});
//인접행렬을 이용한 dfs 구현
function dfs(v) {
//방문한 곳을 true로 값을 바꿈
dfsVisited[v] = true;
dfsResult.push(v);
for (let i in arr) {
if (arr[v][i] === 1 && !dfsVisited[i]) {
dfs(i);
}
}
}
//큐로 bfs 구현
function bfs(v) {
const queue = [];
queue.push(v);
bfsResult.push(v);
while (queue.length) {
let v = queue.shift();
bfsVisited[v] = true;
for (let i in arr) {
if (arr[v][i] === 1 && !bfsVisited[i]) {
bfsVisited[i] = true;
bfsResult.push(i);
queue.push(i);
}
}
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 7576 [nodejs] 토마토 (0) | 2021.02.04 |
---|---|
백준2178[nodejs] 미로 탐색 (0) | 2021.02.04 |
백준1012[nodejs]유기농 배추 (0) | 2021.02.04 |
백준2667[nodejs]단지번호붙이기 (0) | 2021.02.04 |
백준2606[nodejs] 바이러스 (0) | 2021.02.04 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- SQL
- 프로그래머스
- nodejs
- 534 error
- Express
- 회원가입
- slice
- 정규표현식
- GROUP BY
- 바이러스 dfs
- tolowercase
- 숫자야구게임
- 백준 7569 node
- sort
- JOIN
- AWS
- 코드테스트
- 카카오2018[1차]
- 토마토3차원
- JavaScript
- smtp error
- 백준 7562 node
- 백준
- Split
- Level 1
- Replace
- 코딩테스트
- left join
- 로그인
- nodemailer error
- Total
- Today
- Yesterday