๐ŸŽฒ ๋ฐฑ์ค€ 11724๋ฒˆ ์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜

Jeongeunยท2023๋…„ 6์›” 3์ผ

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
69/188

๋ฐฑ์ค€ 11724๋ฒˆ

๐Ÿ’Š ์ฒ˜์Œ์— ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ BFS๋กœ ํ’€๊ธฐ์œ„ํ•ด shift๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ทธ๋Ÿฐ๋“ฏํ•˜๋‹ค. ๊ทธ๋ž˜์„œ DFS๋กœ ํ’€์—ˆ๋‹ค.
๐Ÿ’Š ๋ฐ”๊พผ ํ›„์—๋„ ํ‹€๋ ธ๋‹ค๊ณ  ํ•ด์„œ ์ฐพ์•„๋ณด๋‹ˆ graph์ •๋ณด๋ฅผ ๋„ฃ์„ ๋•Œ, (1,2), (2,1) ๋‘˜๋‹ค ๋„ฃ์–ด์ฃผ์–ด์•ผํ•˜๋Š”๋ฐ (1,2)๋งŒ ๋„ฃ์–ด์ฃผ์–ด์„œ ๊ทธ๋Ÿฐ ๊ฒƒ์ด์—ˆ๋‹ค.

const fs = require('fs'); 
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

const [N, M] = input.shift().split(" ").map(Number);

const graph = Array.from(new Array(N + 1), () => []);

for (let i = 0; i < M; i++) {
  const [u, v] = input[i].split(" ").map(Number);
  graph[u].push(v);
  graph[v].push(u);
}

let checked = new Array(N + 1).fill(0);
let willCheck = [];
let block = 0;

const DFS = () => {
  while (willCheck.length) {
    const check = willCheck.pop();
    if (checked[check] === 0) {
      checked[check] = 1;
      for (let i = 0; i < graph[check].length; i++) {
        willCheck.push(graph[check][i]);
      }
    }
  }
};

for (let i = 1; i < N + 1; i++) {
  if (checked[i] === 0) {
    willCheck.push(i);
    DFS();
    block++;
  }
}

console.log(block);

0๊ฐœ์˜ ๋Œ“๊ธ€