of integer; i,j,u,nm,yk:inte
of integer;
i,j,u,nm,yk:integer;
begin
{инициализация данных}
FillChar(NumIn,SizeOf(NumIn),0);
for i:=1 to N do
for j:=1 to N do if A[i,j]<>0 then Inc(NumIn[j]);
nm:=0;yk:=0;
for i?V do if NumIn[i]=0 then begin Inc(yk);Stack[yk]:=i; end;
{основной цикл}
while yk<>0 do begin
u:=Stack[yk];Dec[yk];Inc(nm);Num[u]:=nm;
for i:=1 to n do
if A[u,i]<>0 then begin Dec(NumIn[i]);
if NumIn[i]=0 then begin
Inc(yk); Stack[yk]:=i; end;
end;
end;
end;
Итак, пусть для графа G выполнено условие утверждения и нам необходимо найти кратчайшие пути (их длины) от первой вершины до всех остальных . Пусть мы находим оценку для вершины с номером i. Достаточно просмотреть вершины, из которых идут дуги в вершину с номером i. Они имеют меньшие номера, и оценки для них уже известны. Остается выбрать меньшую из них.
procedure Distance;
{D, A - глобальные]
var i,j:integer;
begin
D[1]:=0;
for i:=2 to N do D[i]:=?;
{основной
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа