Menu
CoddyTech

Is Graph Bipartite

تحتوي الرسمة البيانية على n عقد، مرقّمة من 0 إلى n-1. كل زوج [a, b] في edges يمثّل حافة غير موجهة بين العقدة a والعقدة b. قد تتكوّن الرسمة البيانية من عدة أجزاء منفصلة، وقد لا تكون لبعض العقد أي حافة على الإطلاق.

تكون الرسمة البيانية ثنائية التقسيم عندما يمكن تقسيم عقدها إلى مجموعتين بحيث تصل كل حافة عقدةً من إحدى المجموعتين بعقدةٍ من المجموعة الأخرى. أعد true إذا كانت الرسمة البيانية ثنائية التقسيم، وfalse خلاف ذلك.

الدالة

isBipartite(n: integer, edges: integer-2d-array) → boolean
ninteger
عدد العُقَد، المرقّمة من 0 إلى n-1
edgesinteger-2d-array
الحواف غير الموجَّهة، كلٌّ منها زوج [a, b]
تُرجعboolean
صحيح إذا أمكن تقسيم العقد إلى مجموعتين بحيث تكون كل حافة بين المجموعتين، وخطأ في غير ذلك

القيود

  • 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