Menu
CoddyTech

Is Graph Bipartite

SedangGrafQueuepython iconjava iconcpp iconc iconjs icon+10

Sebuah graf memiliki n simpul, berlabel dari 0 hingga n-1. Setiap pasangan [a, b] dalam edges adalah sisi tak berarah antara simpul a dan simpul b. Graf dapat terbagi menjadi beberapa bagian terpisah, dan beberapa simpul mungkin tidak memiliki sisi sama sekali.

Graf disebut bipartit jika simpul-simpulnya dapat dibagi menjadi dua kelompok sehingga setiap sisi menghubungkan simpul dari satu kelompok dengan simpul dari kelompok lainnya. Kembalikan true jika graf tersebut bipartit dan false jika tidak.

Fungsi

isBipartite(n: integer, edges: integer-2d-array) → boolean
ninteger
jumlah node, bernomor dari 0 hingga n-1
edgesinteger-2d-array
sisi tak berarah, masing-masing berupa pasangan [a, b]
Mengembalikanboolean
true jika simpul dapat dibagi menjadi dua kelompok dengan setiap sisi berada di antara kedua kelompok tersebut, false jika tidak

Batasan

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] dengan 0 ≤ a, b ≤ n-1 dan a ≠ b
  • Tidak ada sisi yang muncul dua kali, dalam arah mana pun.

Contoh

Input
n = 4edges = [[0, 1], [1, 2], [2, 3], [3, 0]]
Output
true
Penjelasan
Masukkan node 0 dan 2 ke dalam satu grup, lalu node 1 dan 3 ke dalam grup lainnya. Keempat edge menghubungkan kedua grup tersebut.
challenge icon

Pertanyaan lanjutan

Jika graf tidak bipartit, bisakah kamu mengembalikan satu siklus dengan panjang ganjil sebagai bukti, dengan mencantumkan simpul-simpulnya secara berurutan?

Reset kode
def isBipartite(n, edges):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

true