Pagini recente » Cod sursa (job #399868) | Cod sursa (job #1865988) | Cod sursa (job #31725) | Cod sursa (job #31676) | Cod sursa (job #302867)
Cod sursa(job #302867)
type lista=^element;
element=record
i:longint;
a:lista;
end;
var g:array[1..500100] of longint;
v:array[1..100100] of lista;
lg,n,m,a,b,i:longint;
p:lista;
ok:boolean;
procedure euler(nod:longint);
var w,q:lista;
k,r:longint;
begin
inc(lg); g[lg]:=nod;
k:=1;
while k<=lg do
begin
w:=v[g[k]];
if w<>nil then
begin
while (w^.i=0)and(w^.a<>nil) do w:=w^.a;
if w^.i<>0 then
begin
inc(lg); g[lg]:=w^.i;
r:=w^.i;
w^.i:=0;
q:=v[r];
while q^.i<>g[k] do q:=q^.a;
q^.i:=0;
end;
end;
inc(k);
end;
end;
begin
assign(input,'ciclueuler.in'); reset(input);
assign(output,'ciclueuler.out'); rewrite(output);
readln(n,m);
for i:=1 to m do
begin
readln(a,b);
inc(g[a]); inc(g[b]);
new(p);
p^.i:=a; p^.a:=v[b];
v[b]:=p;
new(p);
p^.i:=b; p^.a:=v[a];
v[a]:=p;
end;
ok:=true;
for i:=1 to n do if (g[i] mod 2<>0)or(g[i]=0) then ok:=false;
if not ok then writeln('-1')
else
begin
lg:=0;
euler(1);
for i:=1 to lg-1 do write(g[i],' ');
end;
close(input); close(output);
end.