Menu
CoddyTech

Network Delay Time

ברשת יש n צמתים שמסומנים במספרים 1 עד n. הקישור 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 and 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
הסבר
הקישור הישיר מגיע לצומת 2 בזמן 4, אבל המסלול דרך צומת 3 מגיע בזמן 1 + 2 = 3. צומת 4 מקבל את האות אחרון, בזמן 3 + 1 = 4.
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