Cod sursa(job #302875)

Utilizator cheery_g1rlHaller Emanuela cheery_g1rl Data 9 aprilie 2009 13:06:57
Problema Ciclu Eulerian Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 1.25 kb
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;
        r:longint;
    begin
      w:=v[nod];
      while w<>nil do
        begin
          if w^.i<>0 then
             begin
               r:=w^.i;
                    w^.i:=0;
               q:=v[r];
               while q^.i<>nod do q:=q^.a;
               q^.i:=0;

               euler(r);
             end;
          w:=w^.a;
        end;
      inc(lg);
      g[lg]:=nod;
    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.