Menu
CoddyTech

Network Delay Time

לרשת יש n צמתים, שממוספרים מ־1 עד n. מקבלים את הקישורים שלה כרשימה times, כאשר times[i] = [u, v, w] פירושו שאות שנשלח מצומת u מגיע לצומת v לאחר w יחידות זמן. הקישורים פועלים בכיוון אחד בלבד.

אות יוצא מצומת k בזמן 0 ומתקדם לאורך כל קישור שהוא יכול. יש להחזיר את הזמן שבו הצומת האחרון מקבל אותו, או -1 אם יש צומת שאינו מקבל אותו לעולם.

פונקציה

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
הקשתות המכוונות, כל אחת בצורה [u, v, w]
ninteger
מספר הצמתים
kinteger
הצומת ששולח את האות
מחזירהinteger
הזמן שבו הצומת האחרון מקבל את האות, או ‎-1

אילוצים

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n וגם u ≠ v
  • 0 ≤ w ≤ 100
  • אין שני קישורים שחולקים גם את אותו u וגם את אותו v.
  • 1 ≤ k ≤ n

דוגמאות

קלט
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
פלט
4
הסבר
צומת 3 שומע את האות בזמן 1. צומת 2 יכול לשמוע אותו בזמן 4 דרך הקישור הישיר שלו, אבל המסלול דרך צומת 3 מגיע בזמן 1 + 2 = 3, וצומת 4 שומע אותו בזמן 3 + 1 = 4. צומת 4 הוא האחרון, בזמן 4.

lock icon+16 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

נניח שהאות דועך לאחר שהוא עובר m קישורים. איך מוצאים את הזמן שבו הצומת האחרון שומע אותו במסגרת המגבלה הזו?

איפוס הקוד
def networkDelayTime(times, n, k):
    # כתבו כאן קוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]
n = 4
k = 1

צפוי

4