Cod sursa(job #1424465)

Utilizator ButnaruButnaru George Butnaru Data 24 aprilie 2015 15:19:49
Problema Ciclu Eulerian Scor 80
Compilator fpc Status done
Runda Arhiva educationala Marime 0.97 kb
program ciclueuler;
type
lista=^date;
date=record
m:longint;
next:lista;
end;
    vector1=array[0..100001] of lista;
    vector2=array[0..100001] of longint;
var t:vector1; rang:vector2; a:lista;
    n,m,i,j,x,y:longint; 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);
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 ok:=false;
if ok then euler(1,0) else writeln (f2,-1);
close (f1);
close (f2);
end.