Pagini recente » Cod sursa (job #789073) | Cod sursa (job #2122028) | Cod sursa (job #2184888) | Cod sursa (job #1832554) | Cod sursa (job #2449877)
#!/usr/bin/env python3
import sys
sys.stdout = open('ciclueuler.out', 'w')
class Node(object):
def __init__(self, lbl):
self.lbl = lbl
self.edges = []
self.deg = 0
with open('ciclueuler.in', 'r') as f:
pair = lambda: tuple(map(int, f.readline().split()))
N, M = pair()
nodes, ans, visEdge = [Node(str(i + 1)) for i in range(N)], [], [False] * M
for i in range(M):
A, B = pair()
nodes[A - 1].edges.append((nodes[B - 1], i))
nodes[B - 1].edges.append((nodes[A - 1], i))
if any(len(node.edges) & 1 for node in nodes):
print(-1)
else:
stk = [nodes[0]]
while stk:
v, hasNeighb = stk[-1], False
while v.edges:
vv, e = v.edges.pop()
if visEdge[e]:
continue
stk.append(vv)
visEdge[e] = hasNeighb = True
break
if not hasNeighb:
ans.append(stk.pop().lbl)
print(' '.join(ans))