Menu
CoddyTech

Is Graph Bipartite

Ein Graph hat n Knoten, die von 0 bis n-1 nummeriert sind. Jedes Paar [a, b] in edges stellt eine ungerichtete Kante zwischen den Knoten a und b dar. Der Graph kann in mehrere getrennte Teile zerfallen, und einige Knoten haben möglicherweise überhaupt keine Kante.

Ein Graph ist bipartit, wenn du seine Knoten in zwei Gruppen aufteilen kannst, sodass jede Kante einen Knoten aus der einen Gruppe mit einem Knoten aus der anderen verbindet. Gib true zurück, wenn der Graph bipartit ist, andernfalls false.

Funktion

isBipartite(n: integer, edges: integer-2d-array) → boolean
ninteger
die Anzahl der Knoten, nummeriert von 0 bis n-1
edgesinteger-2d-array
die ungerichteten Kanten, jeweils ein Paar [a, b]
Gibt zurückboolean
true, wenn die Knoten in zwei Gruppen aufgeteilt werden können, wobei jede Kante zwischen den Gruppen verläuft, andernfalls false

Einschränkungen

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] mit 0 ≤ a, b ≤ n-1 und a ≠ b
  • Keine Kante kommt zweimal vor, auch nicht in umgekehrter Richtung.

Beispiele

Eingabe
n = 4edges = [[0, 1], [1, 2], [2, 3], [3, 0]]
Ausgabe
true
Erklärung
Ordne die Knoten 0 und 2 einer Gruppe und die Knoten 1 und 3 der anderen Gruppe zu. Jede der vier Kanten verbindet die beiden Gruppen.
challenge icon

Weiterführende Frage

Wenn der Graph nicht bipartit ist, kannst du als Beweis einen Zyklus ungerader Länge zurückgeben und seine Knoten der Reihe nach auflisten?

Code zurücksetzen
def isBipartite(n, edges):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

true