Cod sursa(job #411960)

Utilizator skullLepadat Mihai-Alexandru skull Data 5 martie 2010 11:42:12
Problema Sortare topologica Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.21 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.