Cod sursa(job #928254)

Utilizator andrei_toaderToader Andrei Sorin andrei_toader Data 26 martie 2013 12:58:31
Problema Ciclu Eulerian Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 1.09 kb
program euler;
var f,g:text;
    ad:array of array  of 0..1;
    a:array of array   of longint;
    n,m,i,x,y,nr:longint;
    retine:array[1..100000] of longint;
    grad:array[1..100000] of longint;
    ok:boolean;

procedure euler(v:longint);
var w,i:longint;
begin
 for i:=1 to a[v,0] do
 begin
  w:=a[v,i];
  if ad[v,w]=1 then
  begin
  ad[v,a[v,i]]:=0;
  ad[a[v,i],v]:=0;
  euler(w);
 end;
 end;
   inc(nr); retine[nr]:=v;
end;

begin
 assign (f,'ciclueuler.in'); reset (f);
 assign (g,'ciclueuler.out'); rewrite(g);
 readln (f,n,m);
 setlength(a,n+1,1);
 setlength(ad,n+1,n+1);
 for i:=1 to m do
 begin
  read  (f,x,y);
  inc(grad[x]);inc (grad[y]);
 setlength(a[x],length(a[x])+1);
  inc(a[x,0]);
  a[x,a[x,0]]:=y;
  setlength(a[y],length(a[y])+1);
  inc(a[y,0]);
  a[y,a[y,0]]:=x;
  ad[x,y]:=1; ad[y,x]:=1;
 end;
 ok:=true;
 for i:=1 to n do
  if grad[i] mod 2=1 then
  begin
   ok:=false; break;
  end;
  if not ok then
   writeln (g,-1)
  else
  begin
 nr:=0;
 euler(1);
 for i:=nr downto 1 do write (g,retine[i],' ');
end;
 close (F); close (G);
end.