Код: Алгоритм Флойда
W : array[1..MaxN, 1..MaxN] of longint; //таблиця найкоротших шляхів
 
function Min(a, b : longint) : longint;
begin
    if a < b then min := a else min := b;
end;
 
procedure floyd(A : Matrix; N : integer);
var i, j, k : integer;
begin
    for i := 1 to N do for j := 1 to N do W[i, j] := A[i, j]; //копіюємо матрицю суміжності в таблицю відстаней
    for k := 1 to N do //перебираємо всі набори вершин(1),(1,2),(1,2,3)...(1,2,3..N)
    for i := 1 to N do 
    for j := 1 to N do W[i,j] := min(W[i, j], W[i, k] + W[k, j]); //возможності два варіанти: найкоротша відстань від i до j проходить через вершину k чи ні.
end;
Сільвейстр Богдан, Паламар Максим, Майданюк Артем
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website