Sign in
or
Register
Courses
Textbook
Compiler
Contests
Topics
Courses
نظرية الرسم البياني
خوارزمية ديكسترا
Module:
خوارزمية ديكسترا
Problem
1
/14
Dijkstra: البداية (C ++)
Theory
Click to read/hide
إعطاء رسم بياني مرجح موجه أو غير موجه برؤوس n وحواف m. أوزان جميع الحواف غير سالبة. تم تحديد بعض قمة البداية s. تحتاج إلى العثور على أطوال أقصر المسارات من قمة الرأس s إلى جميع الرؤوس الأخرى ، وكذلك توفير طريقة لطباعة أقصر المسارات نفسها. div>
& nbsp؛
تسمى هذه المشكلة "مشكلة أقصر مسار بمصدر واحد" (مصدر واحد مشكلة أقصر المسارات). div>
يؤدي نفس المهام مثل 1-K BFS ، ولكن بغض النظر عن K. أيضًا ، مثل 1-K BFS ، فإنه لا يتعامل بشكل صحيح مع الحواف السلبية div>
الخوارزمية strong>:
تتكون خوارزمية Dijkstra نفسها من تكرارات N. في التكرار التالي ، قمة الرأس V & nbsp؛ مع أصغر مسافة إليه من بين القمم التي لم يتم تحديدها بعد ، يتم تمييز هذا الرأس ويحدث ارتخاء القمم المجاورة منه. div>
& nbsp ؛ السلوك المقارب النهائي للخوارزمية هو: O (n
2
+ m)
Problem
يتم إعطاؤك رسم بياني مرجح موجه. أوجد أقصر مسافة من رأس معين إلى آخر. div>
& nbsp؛
إدخال strong>
يحتوي السطر الأول على ثلاثة أرقام: N و S و F (1 & le؛ N & le؛ 100، 1 & le؛ S، F & le؛ N) ، حيث N & ndash؛ عدد رؤوس الرسم البياني ، S & ndash ؛ الرأس الأولي و F & ndash؛ أخير. في السطور N التالية ، أدخل أرقام N لكل منها ، بما لا يتجاوز 100 ، & ndash؛ مصفوفة الوزن المجاورة للرسم البياني ، حيث تعني -1 عدم وجود حافة بين الرؤوس وأي رقم غير سالب & ndash؛ وجود حافة وزن معين. الأصفار مكتوبة على القطر الرئيسي للمصفوفة. div>
& nbsp؛
الإخراج strong>
مطلوب عرض المسافة المرغوبة أو -1 إذا لم يكن هناك مسار بين الرؤوس المحددة.
أمثلة strong>
#
إدخال
الإخراج
<الجسم>
1
3 2 1
0 1 1
4 0 1
2 1 0
3
1000
ms
32 Mb
Rules for program design and list of errors in automatic problem checking
Teacher commentary