Pagini recente » Cod sursa (job #773499) | Cod sursa (job #35119) | Cod sursa (job #2327013) | Cod sursa (job #146000) | Cod sursa (job #465861)
Cod sursa(job #465861)
var f,g:text;
i,n,m,pp,cr,cra,aux,aux2,min,max,maxp:longint;
a,b,c,d,de,auxv:array[-1..100000]of longint;
procedure ajt(x:longint);
var auxer:longint;
begin
writeln(g,x,' ',de[x]);
auxer:=de[x];
de[x]:=-1;
if de[auxer]<>-1 then begin
ajt(auxer);
end;
end;
procedure ajt2(x:longint);
begin
if a[a[x]]<>-1 then begin
ajt2(a[x]);
end;
writeln(g,a[x],' ',x);
a[x]:=-1;
end;
begin
assign(f,'mesaj4.in');reset(f);
assign(g,'mesaj4.out');rewrite(g);
readln(f,n,m);
for i:=1 to m do
begin
readln(f,a[i],b[i]);
c[a[i]]:=c[a[i]]+1;
c[b[i]]:=c[b[i]]+1;
d[i]:=i;
end;
for i:=1 to n do
if c[i]>max then begin
max:=c[i];
maxp:=d[i];
end;
pp:=maxp;
de[pp]:=-1;
aux:=n-1;
for i:=1 to m do
auxv[i]:=i+1;
min:=1;
while aux2<aux do
begin
cr:=min;
while cr<=m do
begin
if de[b[cr]]<>0 then begin
if de[a[cr]]=0 then
begin
de[a[cr]]:=b[cr];
aux2:=aux2+1;
end;
if cr=min then min:=auxv[cr]
else auxv[cra]:=auxv[cr];
end
else if de[a[cr]]<>0 then begin
if de[b[cr]]=0 then
begin
aux2:=aux2+1;
de[b[cr]]:=a[cr];
end;
if cr=min then min:=auxv[cr]
else auxv[cra]:=auxv[cr];
end;
cra:=cr;
cr:=auxv[cr];
end;
end;
writeln(g,(n-1)*2);
for i:=1 to n do
auxv[de[i]]:=-1;
a:=de;
i:=1;
while i<=n do
begin
if (de[i]<>-1) and (auxv[i]<>-1) then ajt(i);
i:=i+1;
end;
i:=1;
while i<=n do
begin
if (a[i]<>-1) and (auxv[i]<>-1) then ajt2(i);
i:=i+1;
end;
close(g);
end.