Pagini recente » Cod sursa (job #1906526) | Cod sursa (job #57399) | Cod sursa (job #1210510) | Cod sursa (job #2909720) | Cod sursa (job #1375065)
program mire;
var t,a:array[0..2,0..500000] of longint;
n,m,nr,nrc,i,j:longint;
start,start1,v:array[0..500000] of longint;
f,g:text;
viz:array[0..500000] of longint;
procedure citire;
var i,k,x,y:longint;
begin
assign(f,'ctc.in'); reset(f);
readln(f,n,m);
k:=0;
for i:=1 to m do
begin
readln(F,x,y);
inc(k);
a[0,k]:=y;
a[1,k]:=start[x];
start[x]:=k;
t[0,k]:=x;
t[1,k]:=start1[y];
start1[y]:=k;
end;
close(f);
end;
procedure so(nod:longint);
var i,p:longint;
begin
viz[nod]:=1;
p:=start[nod];
while p<>0 do
begin
if viz[a[0,p]]=0 then
so(a[0,p]);
p:=a[1,p];
end;
dec(nr);
v[nr]:=nod;
end;
procedure df(nod,c:longint);
var p,i:longint;
begin
viz[nod]:=c;
p:=start1[nod];
while p<>0 do
begin
if viz[t[0,p]]=0 then
df(t[0,p],c);
p:=t[1,p];
end;
end;
begin
citire;
nr:=n+1;
for i:=1 to n do
if viz[i]=0 then
so(i);
nrc:=0;
for i:=1 to n do
viz[i]:=0;
for i:=1 to n do
if viz[v[i]]=0 then
begin
inc(nrc);
df(v[i],nrc);
end;
assign(g,'ctc.out'); rewrite(g);
writeln(g,nrc);
for i:=1 to nrc do
begin
for j:=1 to n do
if viz[j]=i then
write(g,j,' ');
writeln(g);
end;
close(g);
end.