Menu
CoddyTech

Graph Valid Tree

נתונים לך n צמתים, שממוספרים מ־0 עד n-1, ורשימה edges של קשתות לא מכוונות. כל זוג [a, b] מחבר בין הצומת a לצומת b.

החזר true אם הקשתות יוצרות עץ אחד מכל n הצמתים: אפשר להגיע מכל צומת לכל צומת אחר, ואין מעגל. אחרת, החזר false.

פונקציה

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
מספר הצמתים, הממוספרים מ־0 עד n-1
edgesinteger-2d-array
הקשתות הלא מכוונות, כל אחת זוג [a, b]
מחזירהboolean
true אם הקשתות מחברות את כל n הצמתים לעץ אחד, false אחרת

אילוצים

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] כאשר 0 ≤ a, b ≤ n-1 וגם a ≠ b
  • אף קשת אינה מופיעה פעמיים, בשום כיוון.

דוגמאות

קלט
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
פלט
true
הסבר
צומת 0 מקושר לצמתים 1, 2 ו-3, וצומת 4 מחובר לצומת 1. ארבע קשתות מחברות את כל חמשת הצמתים ללא לולאה, ולכן זהו עץ.
challenge icon

שאלת המשך

כשהגרף אינו עץ, כמה קשתות צריך להסיר וכמה להוסיף כדי להפוך אותו לעץ? האם אפשר לספור את שתיהן במעבר אחד?

איפוס הקוד
def validTree(n, edges):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

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

הפלט הצפוי

true