Реализация поиска Эйлерова цикла в графе
Igor Kvasov - 13 Apr 2005
const
maxn = 100;
var
e,was:array[1..maxn,1..maxn]of longint;
ne:array[1..maxn]of longint;
stack:array[1..maxn*maxn]of longint;
i,n,m,u,v,top:longint;
ok:boolean;
begin
read(n,m);
for i:=1 to m do begin
read(u,v);
inc(ne[u]); e[u,ne[u]]:=v;
inc(ne[v]); e[v,ne[v]]:=u;
end;
for i:=1 to n do if ne[i] mod 2=1 then begin
write('No cycle'); exit;
end;
top:=1; stack[1]:=1;
while top>0 do begin
u:=stack[top]; ok:=true;
for i:=1 to ne[u] do begin
v:=e[u,i];
if was[u,v]=0 then begin
inc(top); stack[top]:=v;
was[u,v]:=1;was[v,u]:=1;
ok:=false; break;
end;
end;
if ok then begin
dec(top);
write(u,' ');
end;
end;
end.