Cod sursa(job #1614740)

Utilizator Stefan.Andras Stefan Stefan. Data 26 februarie 2016 08:37:09
Problema Sortare topologica Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.02 kb
program toposort;
const Nmax = 50005;
      Mmax = 100005;
var f, g:text;
    t:array[0..1,1..Mmax] of longint;
    start, sol:array[1..Nmax] of longint;
    viz:array[1..Nmax] of boolean;
    bufin, bufout:array[1..1 shl 16] of byte;
    i, j, k, contor, n, m:longint;
//----------------------
procedure df(nod:longint);
var z:longint;
begin
   viz[nod] := true;
   z := start[nod];
   while z <> 0 do
      begin
        if not(viz[t[0, z]]) then df(t[0, z]);
        z := t[1, z];
      end;
   inc(contor);
   sol[contor] := nod;
end;
//--------------------
begin
   assign(f, 'sortaret.in'); reset(f);
   assign(g, 'sortaret.out'); rewrite(g);
   settextbuf(f, bufin); settextbuf(f, bufout);
   readln(f, n, m);
   for k := 1 to m do
      begin
         readln(f, i, j);
         t[0, k] := j;
         t[1, k] := start[i];
         start[i] := k;
      end;
   for i := 1 to n do
      if not(viz[i]) then df(i);
   for i := contor downto 1 do write(g, sol[i],' ');
   close(f); close(g);
end.