Pagini recente » Cod sursa (job #2657948) | Cod sursa (job #2008678) | Cod sursa (job #355966) | Cod sursa (job #2971392) | Cod sursa (job #125468)
Cod sursa(job #125468)
var fi,fo:text;
k,i,j,ct,n,m,ok,nr,ok2,ct2:integer;
a:array[1..255,1..255]of byte;
s,drum,drum2,t,st,ap:array[1..255]of byte;
procedure init;
var i:integer;
begin
for i:=1 to n do
s[i]:=0;
end;
procedure save(nod:integer);
begin
if nr<ct then
begin
for i:=1 to n do begin
st[i]:=0; ap[i]:=0; end;
for i:=1 to ct do
begin
drum2[i]:=drum[i];
st[drum2[i]]:=1;
ap[drum2[i]]:=1;
end;
nr:=ct;
end;
ct2:=t[nod];
end;
procedure df(nod:integer);
var i:integer;
begin
s[nod]:=1;
ct:=t[nod];
ok2:=0;
for i:=1 to n do
if (a[nod,i]=1)and(s[i]=0) then
begin
ok2:=1;
inc(ct);
t[i]:=ct;
drum[ct]:=i;
ok:=0;
for k:=1 to n do
if (a[i,k]=1)and(s[k]=0) then
begin ok:=1; break; end;
if ok=0 then
begin
init;
save(nod);
end;
df(i);
end;
if ok2=0 then
if ct=1 then save(nod)
else ct:=ct2;
end;
begin
assign(fi,'strazi.in'); reset(fi);
assign(fo,'strazi.out'); rewrite(fo);
read(fi,n,m);
for i:=1 to m do
begin
read(fi,k,j);
a[k,j]:=1;
end;
drum[1]:=1;
t[1]:=1;
df(1);
writeln(fo,n-nr);
for i:=1 to n do
if ap[i]=0 then begin inc(nr); drum2[nr]:=i; writeln(fo,drum2[nr-1],' ',drum2[nr]); end;
for i:=1 to nr do
write(fo,drum2[i],' ');
close(fi);
close(fo);
end.