[백준 5567] 결혼식 with node.js

waterglasses·2021년 9월 28일
0

📌 문제링크

https://www.acmicpc.net/problem/5567

📌 풀이

  • 1이 상근이기 때문에 1부터 거리가 1이나 2인 거리만 뽑아서 길이를 구한다.
  • BFS 탐색 후 filter 메서드 사용

📌 코드

const fs = require('fs');
const stdin = (
  process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString().trim()
    : `6
5
1 2
1 3
3 4
2 3
4 5`
).split('\n');

const input = (() => {
  let line = 0;
  return () => stdin[line++];
})();

const getNumOfInvitedToWedding = (startVertex) => {
  const visitedVertices = new Array(N + 1).fill(false);
  let distance = new Array(N + 1).fill(0);
  let queue = [startVertex];
  let queueCursor = 0;

  while (queue.length > queueCursor) {
    const vertex = queue[queueCursor++];

    visitedVertices[vertex] = true;

    for (let nextVertex of friendshipGraph[vertex]) {
      if (visitedVertices[nextVertex]) continue;
      visitedVertices[nextVertex] = true;

      distance[nextVertex] = distance[vertex] + 1;
      queue.push(nextVertex);
    }
  }

  return distance.filter((distance) => distance === 1 || distance === 2);
};

const N = parseInt(input());
const M = parseInt(input());
const friendshipGraph = Array.from(new Array(N + 1), () => new Array());
for (let i = 0; i < M; i++) {
  const [friendA, friendB] = input().split(' ').map(Number);

  friendshipGraph[friendA].push(friendB);
  friendshipGraph[friendB].push(friendA);
}

console.log(getNumOfInvitedToWedding(1).length);
profile
매 순간 성장하는 개발자가 되려고 노력하고 있습니다.

0개의 댓글