Menu
CoddyTech
flag Ar iconالعربيةdown icon

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