Cod sursa(job #442659)

Utilizator streitferd_erikaStreitferd Erika streitferd_erika Data 14 aprilie 2010 22:11:07
Problema Sortare topologica Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.19 kb
type pnod=^nod;
     nod=record
     inf:longint;
     urm:pnod;
     end;

var v:array[1..50000] of pnod;
    sort,viz:array[1..50000] of longint;
    n,m,nr,i,x,y:longint;
    f,g:text;

procedure addlist(x,y:longint);
var q:pnod;
    begin
         if v[x]=nil then
           begin
              new(q);
              q^.inf:=y;
              q^.urm:=nil;
              v[x]:=q;
           end       else
           begin
              new(q);
              q^.inf:=y;
              q^.urm:=v[x];
              v[x]:=q;
           end;
    end;

procedure dfs(x:longint);
var q:pnod;
begin
     viz[x]:=1;
     q:=v[x];
     while q<>nil do
           begin
              if viz[q^.inf]=0 then
                 dfs(q^.inf);
              q:=q^.urm;
           end;
     inc(nr);
     sort[nr]:=x;
end;

begin
     assign(f,'sortaret.in'); reset(f);
     readln(f,n,m);
     for i:=1 to m do
       begin
         readln(f,x,y);
         addlist(x,y);
       end;
     for i:=1 to n do
        if viz[i]=0 then
          dfs(i);
     assign(g,'sortaret.out');
     rewrite(g);
     for i:=n downto 1 do
       write(g,sort[i],' ');
     close(g);
end.