Menu
CoddyTech

Is Graph Bipartite

Bir grafın n düğümü vardır ve bunlar 0 ile n-1 arasında etiketlenmiştir. edges içindeki her [a, b] çifti, a düğümü ile b düğümü arasındaki yönsüz bir kenardır. Graf birkaç ayrı parçaya ayrılmış olabilir ve bazı düğümlerin hiç kenarı olmayabilir.

Bir graf, düğümlerini her kenar bir gruptaki düğümü diğer gruptaki bir düğüme bağlayacak şekilde iki gruba ayırabiliyorsanız iki parçalıdır. Graf iki parçalıysa true, değilse false döndürün.

Fonksiyon

isBipartite(n: integer, edges: integer-2d-array) → boolean
ninteger
0'dan n-1'e kadar numaralandırılmış düğüm sayısı
edgesinteger-2d-array
yönsüz kenarlar; her biri [a, b] çiftidir
Döndürürboolean
düğümler, her kenar iki grup arasında olacak şekilde iki gruba ayrılabiliyorsa true, aksi takdirde false

Kısıtlar

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] olmak üzere 0 ≤ a, b ≤ n-1 ve a ≠ b
  • Hiçbir kenar, hangi yönde olursa olsun, iki kez görünmez.

Örnekler

Girdi
n = 4edges = [[0, 1], [1, 2], [2, 3], [3, 0]]
Çıktı
true
Açıklama
0 ve 2 düğümlerini bir gruba, 1 ve 3 düğümlerini diğer gruba koyun. Dört kenarın her biri iki grubu birleştirir.
challenge icon

Ek soru

Graf iki parçalı değilse, kanıt olarak düğümlerini sırasıyla listeleyerek tek sayıda kenarı olan bir döngü döndürebilir misin?

Kodu sıfırla
def isBipartite(n, edges):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

true