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 و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