백준 1707 이분 그래프

bkboy·2022년 5월 31일
0

백준 초급

목록 보기
46/80
const solution = (n, arr) => {
  let answer = 'YES';
  const dis = new Array(n + 1).fill(''); // 색 저장용
  const visited = new Array(n + 1).fill(0);
  const graph = Array.from(Array(n + 1), () => []);
  for (let [a, b] of arr) {
    graph[a].push(b);
    graph[b].push(a);
  }

  let queue = [];
  visited[1] = 1;
  dis[1] = 'red';
  queue.push(1);
  while (queue.length) {
    let cur = queue.shift();
    for (let next of graph[cur]) {
      if (!visited[next]) {
        visited[next] = 1;
        queue.push(next);
        if (dis[cur] === 'red') {
          dis[next] = 'blue';
        } else {
          dis[next] = 'red';
        }
      }
    }
  }

  for (let i = 1; i <= n; i++) {
    let tmp = dis[i]; // 현재 key값의 색깔
    if (graph[i].some((el) => dis[el] === tmp)) {
      // key값과 연결된 요소중
      // 같은 색이 하나라도 있다면
      answer = 'NO'; // 이분그래프가 아니다!
    }
  }
  return answer;
};
  • 임시
profile
음악하는 개발자

0개의 댓글