Menu
CoddyTech

Is Graph Bipartite

보통그래프큐python iconjava iconcpp iconc iconjs icon+10

그래프에는 0부터 n-1까지 레이블이 지정된 n개의 노드가 있습니다. edges의 각 [a, b] 쌍은 노드 a와 노드 b 사이의 무방향 간선입니다. 그래프는 여러 개의 분리된 부분으로 나뉠 수 있으며, 간선이 전혀 없는 노드가 있을 수도 있습니다.

모든 간선이 한 그룹의 노드와 다른 그룹의 노드를 연결하도록 노드를 두 그룹으로 나눌 수 있으면 그래프는 이분 그래프입니다. 그래프가 이분 그래프이면 true를 반환하고, 그렇지 않으면 false를 반환하세요.

함수

isBipartite(n: integer, edges: integer-2d-array) → boolean
ninteger
노드의 개수(0부터 n-1까지 번호가 매겨짐)
edgesinteger-2d-array
무방향 간선들로, 각 간선은 [a, b] 쌍입니다
반환값boolean
노드들을 두 그룹으로 나눌 수 있고 모든 간선이 두 그룹 사이에 있으면 true, 그렇지 않으면 false

제약 조건

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b]이며 0 ≤ a, b ≤ n-1이고 a ≠ b
  • 어느 방향에서든 동일한 간선이 두 번 나타나지 않습니다.

예제

입력
n = 4edges = [[0, 1], [1, 2], [2, 3], [3, 0]]
출력
true
설명
노드 0과 2를 한 그룹에 넣고 노드 1과 3을 다른 그룹에 넣으세요. 네 개의 간선은 각각 두 그룹을 연결합니다.
challenge icon

후속 질문

그래프가 이분 그래프가 아닐 때, 증명으로 홀수 길이의 사이클 하나를 그 노드들을 순서대로 나열해 반환할 수 있나요?

코드 초기화
def isBipartite(n, edges):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

n = 4
edges = [[0, 1], [1, 2], [2, 3], [3, 0]]

예상 출력

true