Cod sursa(job #372612)

Utilizator arnold23Arnold Tempfli arnold23 Data 10 decembrie 2009 22:35:38
Problema Sortare topologica Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.93 kb
type lista=^elem;
        elem=record
          c:longint;
          kov:lista;
        end;

var v:array[1..100000] of lista;
    lat:array[1..100000] of boolean;
    f:text;
    n,a,b,k,i,m:longint;
    e:lista;

procedure betesz(var q:lista; w:longint);
var p:lista;
begin
 new(p);
 p^.c:=w;
 p^.kov:=q;
 q:=p;
end;

procedure melysegi(p:longint);
var q:lista;
begin
  lat[p]:=true;
  q:=v[p];
  while q<>nil do begin
    if not lat[q^.c] then melysegi(q^.c);
    q:=q^.kov;
  end;
  betesz(e,p);
end;

procedure kiir(l:lista);
begin
   while l<>nil do begin
      write(f,l^.c,' ');
      l:=l^.kov;
   end;
end;

begin
  assign(f,'sortaret.in');
  reset(f);
  readln(f,n,m);
  for i:=1 to m do begin
    readln(f,a,b);
    betesz(v[a],b);
  end;
  close(f);

  for i:=1 to n do
   if not lat[i] then melysegi(i);

  assign(f,'sortaret.out');
  rewrite(f);
  kiir(e);
  close(f);

end.