Pagini recente » Cod sursa (job #1607233) | Cod sursa (job #1863899) | Cod sursa (job #2523721) | Cod sursa (job #907635) | Cod sursa (job #1584982)
Program TopologicalSort;
type
lista=^datelista;
celula=^datecelula;
datelista=record
nr:longint;
next:lista;
end;
datecelula=record
a,x,z:lista;
tmp:boolean;
end;
tabel=array[1..50000] of celula;
var t:tabel;
n,m:longint;
f1,f2:text;
Procedure initieregraf;
var i:longint;
begin
for i:=1 to n do
begin
new(t[i]);
new(t[i]^.x);
t[i]^.x^.nr:=-1;
t[i]^.x^.next:=nil;
t[i]^.a:=t[i]^.x;
t[i]^.z:=t[i]^.x;
t[i]^.tmp:=false;
end;
end;
Procedure citiredate;
var i,a,b:longint;
begin
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;
end;
Procedure visit(i:longint);
begin
t[i]^.tmp:=true;
t[i]^.x:=t[i]^.x^.next;
while(t[i]^.x<>nil)do
begin
if t[t[i]^.x^.nr]^.tmp=false then
visit(t[i]^.x^.nr);
t[i]^.x:=t[i]^.x^.next;
end;
write(f2,i,' ');
end;
Procedure tpsort;
var i:longint;
begin
for i:=1 to n do
if t[i]^.tmp=false then
visit(i);
end;
Procedure main;
begin
readln(f1,n,m);
initieregraf;
citiredate;
tpsort;
end;
begin
assign(f1,'sortare.in'); reset(f1);
assign(f2,'sortare.out'); rewrite(f2);
main;
close(f1);
close(f2);
end.