Cod sursa(job #247645)

Utilizator belgun_adrianBelgun Dimitri Adrian belgun_adrian Data 23 ianuarie 2009 17:13:14
Problema Sortare topologica Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.09 kb
// Arhiva Educationala - Sortare Topologica

type    adresa          = ^nod;
        nod             = record inf : word; adr : adresa; end;

var     n,m,x,y,i, count: longint;
        f               : text;
        q               : adresa;
        p               : array [1..50000] of adresa;
        uz, a     : array [1..50000] of word;

procedure       df      (k:word);
var             q       : adresa;
begin
q       := p[k];
uz[k]   := 1;
while   (q <> nil)      do
        begin
        if      (uz[q^.inf] = 0)     then
                df      (q^.inf) ;
        q       := q^.adr
        end;
inc     (count);
a[count]:= k;
end;

begin
assign  (f,'sortaret.in');
reset   (f);
readln  (f, n, m);
count   := 0;
for i := 1  to m do
        begin
        readln  (f, x, y);
        new     (q);
        q^.inf  := y;
        q^.adr  := p[x];
        p[x]    := q;
        end;
close   (f);

for i := 1 to n do
    if (uz[i]=0) then
        df(i);
assign  (f, 'sortaret.out');
rewrite (f);
for i:= n downto 1 do
        write(f, a[i],' ');
close   (f);
end.