Cod sursa(job #541540)

Utilizator pendreePorsche Endre pendree Data 25 februarie 2011 11:59:54
Problema Sortare topologica Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.08 kb
uses crt;
type mut=^elem;
     elem=record
            inf:integer;
            kov:mut;
           end;
     matr=array[1..20000,1..20000] of boolean;
     vekt=array[1..50000]of boolean;
var i,j,k,m,n:integer;
    x:matr;
    top:mut;
    f:text;
    jart:vekt;
procedure push(var top:mut;a:integer);
 var p:mut;
  begin
    new(p);
    p^.inf:=a;
    p^.kov:=top;
    top:=p;
  end;
procedure df(a:integer);
 var p:integer;
  begin
   jart[a]:=true;
   for p:=1 to n do
    if (x[a,p]) and (not(jart[p])) then df(p);
   push(top,a);
  end;
procedure kiir(top:mut);
 var p:mut;
  begin
   new(p);
   p:=top;
   while p<>nil do
    begin
     write(f,p^.inf,' ');
     p:=p^.kov;
    end;
  end;
begin
 assign(f,'sortaret.in');
 reset(f);
 readln(f,n,m);
 for i:=1 to n do
  for j:=1 to n do x[i,j]:=false;
 for i:=1 to m do
  begin
   readln(f,j,k);
   x[j,k]:=true;
  end;
 close(f);
 top:=nil;
 for i:=1 to n do jart[i]:=false;
 for i:=1 to n do
  if not(jart[i]) then df(i);
 assign(f,'sortaret.out');
 rewrite(f);
 kiir(top);
 close(f);
end.