Код: Алгоритм Дейкстри
D : array[1..MaxN] of integer; //масив найкоротших відстаней
procedure Deisktr(A : Matrix; N, s : integer); //s -шукана вершина
var i, j, v, min : longint;
begin
    visited[s] := TRUE; //вершина S переглянута
    for i := 1 to N do D[i] := A[s, i]; //початковий масив відстаней
    for i := 1 to n-1 do //на кожному кроці знаходимо мінімальне рішення і намагаємося його поліпшити
    begin
        min := inf;
        for j := 1 to N do if (not visited[j]) and (D[j] < min) then
        begin
            min := D[j]; //мінімальна відстань
            v := j; //знайдена вершина
        end;
        for j := 1 to N do if (D[j] > D[v] + A[v, j]) and (D[v] < inf) and (A[v, j] < inf) then D[j] := D[v] + A[v, j]; //намагаємося поліпшити рішення.  Якщо в ній відстань більше, ніж сума відстані до поточної вершини і довжини ребра, то зменшуємо його.
        s := v; //нова поточна вершина
        visited[v] := TRUE; //і вона відзначається як переглянута
    end;
end;
Сільвейстр Богдан, Паламар Максим, Майданюк Артем
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website