Раздел «Алгоритмы».TopologicalSortPAS:

Топологическая сортировка на Pascal

//(C) Igor Kvasov
const
  maxn = 100;
var
  was,ne,ans:array[1..maxn]of longint;
  e:array[1..maxn,1..maxn]of longint;
  nans,i,u,v,n,m:longint;

procedure find(u:longint);
var
  j:longint;
begin
  was[u]:=1;
  for j:=1 to ne[u] do if was[e[u,j]]=0 then find(e[u,j]);
  inc(nans); ans[nans]:=u;
end;

begin
  read(n,m);
  for i:=1 to m do begin
    read(u,v);
    inc(ne[u]); e[u,ne[u]]:=v;
  end;
  for i:=1 to n do if was[i]=0 then find(i);
  for i:=n downto 1 do write(ans[i],' ');
end.

-- IgorKvasov? - 28 Dec 2004

AlgorithmClasifyForm
Type: Код
Scope: Графы
Strategy:  
Complexity: Low