<div class="task-content"> <p>ابحث عن أقصر مسار في الرسم البياني باستخدام الفئات</p> </div>
PHP
Hard
classes
مهمة «<div class="task-content"> <p>ابحث عن أقصر مسار في الرسم البياني باستخدام الفئات</p> </div>»
قم بتنفيذ الفئة Graph لتمثيل رسم بياني موجه موزون. يجب أن تحتوي الفئة على طرق addEdge(int $from, int $to, int $weight) لإضافة حافة و shortestPath(int $start, int $end) لإيجاد أقصر مسار من العقدة $start إلى $end باستخدام خوارزمية ديكسترا. إذا لم يكن هناك مسار، يجب أن تعيد الطريقة -1. من المضمون أن أوزان الحواف موجبة، وأن عدد العقد لا يتجاوز 1000، وعدد الحواف يصل إلى 10000.
تنسيق الإدخال
في السطر الأول، يتم إعطاء N (عدد الرؤوس) و M (عدد الحواف) مفصولين بمسافة. بعد ذلك، في M من الأسطر، يتم إعطاء الحواف: from to weight. في السطر الأخير، يتم إعطاء start و end.
تنسيق الإخراج
<p>عدد صحيح — أقل تكلفة للمسار من <code>start</code> إلى <code>end</code>، أو <code>-1</code> إذا لم يكن هناك مسار.</p>
أمثلة
مثال 1
الإدخال
10
الإخراج
87
مثال 2
الإدخال
3 2
1 2 5
2 3 10
1 3
الإخراج
15
مثال 3
الإدخال
1
الإخراج
0
مثال 4
الإدخال
2 1
1 2 7
2 1
الإخراج
-1
main.php