Всем привет!
Делаю алгоритм Алгоритм Форда-Беллмана по примеру:
http://cybern.ru/algoritm-forda-bell...hi-pascal.html
Данный код может показать минимальное расстояние из одной вершины до всех остальных. А через какие вершины он при этом прошел не говорит. Как можно изменить код, чтобы показывал вершины через которые прошел? Заранее спасибо!
Код:
{$APPTYPE CONSOLE}
const
inf = $7FFFFFFF;
type
TEdge = record
from: integer;
to1: integer;
l: integer;
end;
var
n, m, i, j, v: integer;
t: array [0 .. 1000] of longint;
edges: array [0 .. 10000] of TEdge;
begin
read(n);
readln(m);
for i := 0 to m - 1 do
begin
read(edges[i].from, edges[i].to1);
readln(edges[i].l);
dec(edges[i].from);
dec(edges[i].to1);
end;
readln(v);
dec(v);
for i := 0 to n - 1 do
t[i] := inf;
t[v] := 0;
for i := 1 to n do
for j := 0 to m - 1 do
if (t[edges[j].from] < inf) and
(t[edges[j].from] + edges[j].l < t[edges[j].to1]) then
if i = n then
begin
writeln('INCORRECT INPUT');
exit;
end
else
t[edges[j].to1] := t[edges[j].from] + edges[j].l;
for i := 1 to n - 1 do
begin
if (t[i] = inf) then
writeln('NO')
else
writeln(t[i]);
end;
end.