Pagini recente » Cod sursa (job #378693) | Cod sursa (job #3275239) | Cod sursa (job #57824) | Cod sursa (job #827371) | Cod sursa (job #1627997)
type edge=record
x,y:integer;
end;
var
edges:array[1..100] of edge;
degree,lista:array[1..100] of integer;
i,j,m,n,noduri,muchii,neigh,u:integer;
function next(x:integer):integer;
var i,j:integer;
begin
for i:=1 to muchii do
if edges[i].x=x then
begin
next:=edges[i].y;
exit;
end;
for i:=1 to muchii do
if edges[i].y=x then
begin
next:=edges[i].x;
exit;
end;
end;
procedure erase(a,b:integer);
var i,j:integer;
begin
for i:=1 to muchii do
if (edges[i].x=a) and (edges[i].y=b) then
begin
edges[i].x:=0;
edges[i].y:=0;
break;
end;
for j:=i to muchii do
begin
edges[j].x:=edges[j+1].x;
edges[j].y:=edges[j+1].y;
end;
dec(muchii);
fillchar(degree,sizeof(degree),0);
for i:=1 to noduri do
begin
for j:=1 to muchii do
if (edges[j].x=i) or (edges[j].y=i) then inc(degree[i]);
end;
end;
procedure push(n:integer);
begin
lista[u]:=n;
inc(u);
end;
procedure Euler(nod:integer);
var m:integer;
begin
while (degree[nod]>0) do
begin
neigh:=next(nod);
erase(nod,neigh);
euler(neigh);
end;
push(nod);
end;
BEGIN
assign(input,'ciclueuler.in'); reset(input);
assign(output,'ciclueuler.out'); rewrite(output);
readln(input,noduri,muchii);
for i:=1 to muchii do
readln(input,edges[i].x,edges[i].y);
fillchar(degree,sizeof(degree),0);
u:=1;
fillchar(lista,sizeof(lista),0);
for i:=1 to noduri do
begin
for j:=1 to muchii do
if (edges[j].x=i) or (edges[j].y=i) then inc(degree[i]);
end;
Euler(1);
for i:=1 to u-2 do write(output,lista[i]);
close(input);
close(output);
END.