Problem

4 /10


أقصر طريق

Theory Click to read/hide

إذا كان الرسم البياني يحتوي على دورات ذات وزن سلبي ، فإن خوارزمية Floyd-Warshall لا تنطبق رسميًا على مثل هذا الرسم البياني.

في الواقع ، بالنسبة لأزواج القمم i & nbsp ؛ و j ، والتي من المستحيل الدخول بينها في دورة من الوزن السالب ، ستعمل الخوارزمية بشكل صحيح.

بالنسبة إلى نفس أزواج الرؤوس التي لا توجد إجابة لها (نظرًا لوجود دورة سالبة على المسار بينهما) ، ستجد خوارزمية Floyd عددًا ما (ربما يكون سالبًا بشدة ، ولكن ليس بالضرورة) كإجابة. ومع ذلك ، يمكن تحسين خوارزمية فلويد للتعامل مع أزواج القمم هذه بدقة وإخراجها على سبيل المثال & nbsp؛ \ (- \ infty \) .

للقيام بذلك ، على سبيل المثال ، يمكن إجراء & nbsp؛ المعيار التالي & quot؛ عدم وجود المسار & quot؛. لذا ، دع خوارزمية فلويد المعتادة تعمل على هذا الرسم البياني. ثم لا يوجد أقصر مسار بين الرؤوس i & nbsp ؛ و j & nbsp ؛ إذا وفقط إذا كان هناك قمة يمكن الوصول إليها من i & nbsp ؛ ومن خلالها يمكن الوصول إلى j ، والتي & nbsp ؛ \ (d [t] [t] & lt؛ 0 \) .

بالإضافة إلى ذلك ، عند استخدام خوارزمية Floyd للرسوم البيانية ذات الدورات السالبة ، يجب أن نتذكر أن المسافات التي تنشأ في عملية العمل يمكن أن تذهب سلبًا ، أسيًا مع كل مرحلة. لذلك ، يجب أن تحذر من تجاوز العدد الصحيح من خلال قصر جميع المسافات من الأسفل على بعض القيم (على سبيل المثال ، & nbsp؛ \ (- \ infty \) ).

شفهيًا ، يمكن وصف الحل على النحو التالي:
بعد عمل خوارزمية Floyd-Warshall للرسم البياني للإدخال ، دعنا نكرر جميع أزواج الرؤوس & nbsp؛ \ ((i، j) \) ولكل زوج من هذه الأزواج نتحقق ، إلى ما لا نهاية ، أقصر طريق من i & nbsp ؛ إلى j & nbsp ؛ صغير أم لا. للقيام بذلك ، دعنا نكرر على الرأس الثالث t ، وإذا اتضح أنه & nbsp؛ \ (d [t] [t] & lt؛ 0 \) & nbsp؛ (أي أنها تقع في دورة الوزن السالب) ، ويمكن الوصول إليها من i & nbsp ؛ و j & nbsp ؛ & [مدش] ؛ ثم المسار & nbsp؛ \ ((i، j) \) يمكن أن يكون ذا أطوال متناهية الصغر.

Problem

يتم إعطاؤك رسمًا بيانيًا كاملًا موجهًا مع بعض الأوزان (الأطوال) المخصصة لحوافه. يمكن أن تكون الأوزان موجبة أو سالبة أو صفرية. نحن مهتمون بالحد الأدنى لطول جميع المسارات الممكنة بين جميع أزواج الرؤوس المتمايزة في هذا الرسم البياني. سيكون من الضروري معرفة ما إذا كان هذا الحد الأدنى موجودًا ، وإذا كان موجودًا ، فاحسبه. (لا يوجد حد أدنى إذا كان من الممكن العثور على مسار بطول سالب في الرسم البياني ، كبير بشكل تعسفي في القيمة المطلقة ، يميل إلى اللانهاية).
& nbsp؛
إدخال
السطر الأول هو N & le ؛ 50 رأسًا. بعد ذلك تأتي مصفوفة التقارب للرسم البياني ، أي صفوف N ، كل منها يحتوي على عدد N. الرقم j في الصف الأول من المصفوفة المجاورة يحدد طول الحافة الممتدة من الرأس من الرتبة إلى الرتبة ي. يمكن أن تأخذ الأطوال أي قيمة من -1000000 إلى 1000000. ومن المضمون وجود أصفار على القطر الرئيسي للمصفوفة.
& nbsp؛
الإخراج
طباعة رقم واحد & ndash؛ الحد الأدنى المطلوب. إذا لم يكن موجودًا ، فإن الإخراج & nbsp؛ -1.
أمثلة <الجسم>
# إدخال الإخراج
1
3
0 42 18468 & nbsp؛
6335 0 26501 & nbsp؛
19170 15725 0 & nbsp؛
42
2
3
0 -7 3
-2 0 10
2215 0 نبسب ؛
-1