์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค.
Algorithm
- DFS์ BFS -
๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค.
์ ์ถ๋ ฅ ์์
์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋ฌธ์ ํ๊ธฐ
let DFS = function (num) {
visitedDfs[num] = true;
dfsResult.push(num);
for (let i = 1; i < graph.length; i++) {
if (graph[num][i] === 1 && visitedDfs[i] === false) {
DFS(i);
}
}
return;
};
let BFS = function (num) {
let queue = [];
queue.push(num);
bfsResult.push(num);
while (queue.length !== 0) {
let shiftQueue = queue.shift()
visitedBfs[shiftQueue] = true;
for (let i = 1; i < graph.length; i++) {
if (graph[shiftQueue][i] === 1 && visitedBfs[i] === false) {
visitedBfs[i] = true;
queue.push(i);
bfsResult.push(i);
}
}
}
return;
};
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
let graph = [];
let visitedDfs = [];
let visitedBfs = [];
let dfsResult = [];
let bfsResult = [];
rl.on("line", function (line) {
input.push(line.toString());
}).on("close", function () {
let [node, edge, num] = input
.shift()
.split(" ")
.map((el) => Number(el));
graph = Array.from(Array(node + 1), () => Array(node + 1).fill(0));
for (let i of input) {
let [x, y] = i.split(" ").map((el) => Number(el));
graph[x][y] = 1;
graph[y][x] = 1;
}
visitedDfs = new Array(node + 1).fill(false);
visitedBfs = new Array(node + 1).fill(false);
DFS(num);
BFS(num);
console.log(dfsResult.join(" ") + "\n" + bfsResult.join(" "));
process.exit();
});
'๊ฐ์ธ๊ณต๋ถ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][Node.js] 1271๋ฒ : ์์ฒญ๋ ๋ถ์2 (0) | 2021.06.17 |
---|---|
[๋ฐฑ์ค][Node.js] 1267๋ฒ : ํธ๋ํฐ ์๊ธ (0) | 2021.06.16 |
[๋ฐฑ์ค][Node.js] 1259๋ฒ : ํฐ๋ฆฐ๋๋กฌ์ (0) | 2021.06.14 |
[๋ฐฑ์ค][Node.js] 1225๋ฒ : ์ด์ํ ๊ณฑ์ (0) | 2021.06.13 |
[๋ฐฑ์ค][Node.js] 1212๋ฒ : 8์ง์ 2์ง์ (0) | 2021.06.12 |
๋๊ธ