Pagini recente » Cod sursa (job #1992706) | Cod sursa (job #2734771) | Cod sursa (job #289903) | Cod sursa (job #2229463) | Cod sursa (job #1418517)
program euler;
type
lista=^date;
date=record
m:longint;
next:lista;
end;
tabel=array[0..100001] of lista;
tabb=array[0..100001] of longint;
buf=array[0..1 shl 17] of char;
var t:tabel; rang:tabb; a:lista;
n,i,j,m,x,y:longint; ff1,ff2:buf;
ok:boolean;
f1,f2:text;
procedure euler(x,y:longint);
var a:lista; xx:longint;
begin
while t[x]<>nil do begin
xx:=t[x]^.m;
t[x]:=t[x]^.next;
a:=t[xx];
if a^.m=x then t[xx]:=t[xx]^.next else begin
while a^.next^.m<>x do a:=a^.next;
a^.next:=a^.next^.next;
end;
euler(xx,y+1);
end;
if y>0 then write (f2,x,' ');
end;
begin
assign (f1,'ciclueuler.in');
assign (f2,'ciclueuler.out');
reset (f1);
rewrite (f2);
settextbuf(f1,ff1);
settextbuf(f2,ff2);
readln (f1,n,m);
for i:=1 to m do begin
readln (f1,x,y);
rang[x]:=rang[x]+1; rang[y]:=rang[y]+1;
new(a); a^.m:=x; a^.next:=t[y]; t[y]:=a;
new(a); a^.m:=y; a^.next:=t[x]; t[x]:=a;
end; ok:=true;
for i:=1 to n do
if rang[i] mod 2=1 then begin ok:=false; break; end;
if ok then euler(1,0) else writeln (f2,-1);
close (f1);
close (f2);
end.