Cod sursa(job #177745)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 13 aprilie 2008 16:05:20
Problema Sortare topologica Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.16 kb
program sortaret;
type pnod = ^nod;
      nod = record
            a : longint;
            urm : pnod;
            end;
var A,ul : array [1..50000] of pnod;
    urm : pnod;
    Nr : array [1..50000] of longint;
    i,n,m,x,y : longint;
    f,g : text;
    ok : boolean;
begin
assign(f,'sortaret.in');
reset(f);
assign(g,'sortaret.out');
rewrite(g);

readln(f,n,m);

for i := 1 to n do begin
A[i] := nil;
Nr[i] := 0;
end;

for i := 1 to m do begin
readln(f,x,y);
inc(Nr[y]);
if A[x]=nil then begin
                 new(A[x]);
                 A[x]^.a := y;
                 A[x]^.urm := nil;
                 ul[x] := A[x];
                 end
else begin
        new(urm);
        urm^.a := y;
        urm^.urm := nil;
        ul[x]^.urm := urm;
        ul[x] := urm;
        end;
end;

repeat
ok := true;
for i := 1 to n do
if Nr[i]=0 then begin
                Nr[i] := -1;
                while A[i]<>nil do begin
                dec(Nr[A[i]^.a]);
                A[i] := A[i]^.urm;
                end;
                write(g,i,' ');
                ok := false;
                end;
until ok;

close(f);
close(g);
end.