Cod sursa(job #160182)

Utilizator gabyromaRomanescu Gabriela gabyroma Data 14 martie 2008 20:23:47
Problema Sortare topologica Scor 80
Compilator fpc Status done
Runda Arhiva educationala Marime 0.9 kb
program sortare_topologica;
type point=^nod;
     nod=record
     inf:longint;
     leg:point;
     end;
var f,g:text;
    c:array[1..50000] of integer;
    sel:array[1..50000] of boolean;
    prim:array[1..50000] of point;
    n,m,nr,i:longint;

procedure citire;
var i,x,y:longint; p:point;
begin
readln(f,n,m);
for i:=1 to n do begin
  sel[i]:=false;
  prim[i]:=nil;
  end;
for i:=1 to m do begin
  readln(f,x,y);
  new(p);
  p^.inf:=y;
  p^.leg:=prim[x];
  prim[x]:=p;
  end;
end;

procedure dfs(x:integer);
var p:point;
begin
sel[x]:=true;
p:=prim[x];
while p<>nil do begin
  if not sel[p^.inf] then dfs(p^.inf);
  p:=p^.leg;
  end;
inc(nr);
c[nr]:=x;
end;

begin
assign(f,'sortaret.in');
assign(g,'sortaret.out');
reset(f);
rewrite(g);
citire;
nr:=0;
for i:=1 to n do
  if not sel[i] then dfs(i);
for i:=n downto 1 do write(g,c[i],' ');
close(f);
close(g);
end.