Pagini recente » Cod sursa (job #423791) | Cod sursa (job #1439476) | Cod sursa (job #1623475) | Cod sursa (job #650624) | Cod sursa (job #553718)
Cod sursa(job #553718)
type mat=array[1..5000,1..5000] of 0..3;
vak=array[1..50000] of integer;
vek=array[1..25000] of boolean;
var f:text; i,j,a,b,n,m,d,h,h1,c:integer; v1,v2,jr:vek; x:mat; q:vak;
procedure df1(k:integer);
var i:integer;
begin
v1[k]:=true;
for i:=1 to n do begin
if ((x[k,i]=1)or(x[k,i]=3))and(not v1[i]) then df1(i);
end;
end;
procedure df2(k:integer);
var i:integer;
begin
v2[k]:=true;
for i:=1 to n do begin
if ((x[k,i]=2)or(x[k,i]=3))and(not v2[i]) then df2(i);
end;
end;
begin
assign(f,'ctc.in');
reset(f); d:=0; h:=0;
readln(f,n,m);
for i:=1 to m do begin
readln(f,a,b);
if x[a,b]=0 then begin x[a,b]:=1; x[b,a]:=2; end
else begin x[a,b]:=3; x[b,a]:=3; end;
end;
close(f);
a:=0; b:=0;
assign(f,'ctc.out');
rewrite(f);
for i:=1 to n do begin
v1[i]:=false;
v2[i]:=false;
end;
for i:=1 to n do
jr[i]:=false;
for i:=1 to n do q[i]:=0;
repeat
i:=1;
while (i<n) and jr[i] do begin inc(i); end;
a:=i;
for i:=1 to n do begin
v1[i]:=false;
v2[i]:=false;
end;
df1(a);
df2(a);
inc(d); h1:=0;
for i:=1 to n do
if v1[i] and v2[i] then begin inc(b);inc(h1); end;
inc(h); q[h]:=h1;
for i:=1 to n do
if v1[i] and v2[i] then begin inc(h); q[h]:=i; jr[i]:=true; end;
until b=n;
write(f,d); c:=0;
while c<h do begin
inc(c);
writeln(f);
for j:=1 to q[c] do begin
inc(c); write(f,q[c],' ');
end;
end;
close(f);
end.