Pagini recente » Borderou de evaluare (job #1275572) | Cod sursa (job #656743) | Borderou de evaluare (job #1174101) | Cod sursa (job #623600) | Cod sursa (job #708643)
Cod sursa(job #708643)
Program sortaret;
type lista=^celula;
celula=record
inf:longint;
next:lista;
end;
var a,st:array [1..50001] of lista;
b:array [1..50001] of byte;
b1:array [1..1 shl 15] of char;
v:lista;
i,n,m,p,x,y,l:longint;
fi,fo:text;
procedure dfs(k:longint);
var r:lista;
begin
r:=a[k]; b[k]:=1;
while r<>nil do begin
if b[r^.inf]=0 then begin
new(v);
v^.inf:=r^.inf; v^.next:=st[l]; st[l]:=v;
dfs(r^.inf);
end;
r:=r^.next;
end;
end;
procedure scrie(k:lista);
begin
if k^.next<>nil then scrie(k^.next);
write(fo,k^.inf,' ');
end;
begin
assign(fi,'sortaret.in');
assign(fo,'sortaret.out');
settextbuf(fi,b1);
reset(fi); rewrite(fo);
readln(fi,n,m);
for i:=1 to m do begin
readln(fi,x,y);
new(v);
v^.inf:=y; v^.next:=a[x]; a[x]:=v;
end;
for i:=1 to n do
if b[i]=0 then begin inc(l); new(v); v^.inf:=i; st[l]:=v; dfs(i); end;
for i:=1 to l do scrie(st[i]);
close(fo);
end.