Mai intai trebuie sa te autentifici.
Cod sursa(job #192964)
Utilizator | Data | 1 iunie 2008 18:18:18 | |
---|---|---|---|
Problema | Sortare topologica | Scor | 100 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 1.16 kb |
program Sortare_Topologica;
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.