Pagini recente » Cod sursa (job #2156426) | Cod sursa (job #501375) | Cod sursa (job #2752397) | Cod sursa (job #2256369) | Cod sursa (job #1585926)
Program TopoSort;
type lista=^datelista;
celula=^datecelula;
datelista=record
nr:integer;
next:lista;
end;
datecelula=record
a,x,z:lista;
end;
tabel=array[-10..50010] of celula;
tabelp=array[-10..50010] of boolean;
solutie=array[-10..50010] of integer;
var t:tabel;
p:tabelp;
sol:solutie;
n,m,l,i,a,b:longint;
f1,f2:text;
Procedure visit(i:integer);
begin
p[i]:=true;
t[i]^.x:=t[i]^.a^.next;
while (t[i]^.x<>nil) do
begin
if p[t[i]^.x^.nr]=false then
visit(t[i]^.x^.nr);
t[i]^.x:=t[i]^.x^.next;
end;
l:=l+1;
sol[l]:=i;
end;
begin
assign(f1,'sortare.in'); reset(f1);
assign(f2,'sortare.out'); rewrite(f2);
readln(f1,n,m);
for i:=1 to n do
begin
new(t[i]);
new(t[i]^.x);
t[i]^.x^.nr:=0;
t[i]^.x^.next:=nil;
t[i]^.a:=t[i]^.x;
t[i]^.z:=t[i]^.x;
end;
for i:=1 to m do
begin
readln(f1,a,b);
new(t[a]^.x);
t[a]^.x^.nr:=b;
t[a]^.x^.next:=nil;
t[a]^.z^.next:=t[a]^.x;
t[a]^.z:=t[a]^.x;
end;
l:=0;
for i:=1 to n do
if p[i]=false then
visit(i);
for i:=l downto 1 do
write(f2,sol[i],' ');
close(f1);
close(f2);
end.