Pagini recente » Cod sursa (job #1851557) | Cod sursa (job #3000872) | Cod sursa (job #1572504) | Cod sursa (job #1237659) | Cod sursa (job #2538744)
def inp_gen(fname):
with open(fname, 'rt') as fin:
for line in fin:
for val in line.split():
yield int(val)
def euler(g, n, used, node, cycle):
for x, edge in g[node]:
if used[edge] is False:
used[edge] = True
euler(g, n, used, x, cycle)
cycle.append(node)
def solve(g, n, m, euler_path):
used = {x: False for x in range(m)}
euler(g, n, used, 1, euler_path)
if __name__ == "__main__":
it = inp_gen('ciclueuler.in')
n, m = next(it), next(it)
ins = {x: 0 for x in range(1, n + 1)}
g = {x: [] for x in range(1, n + 1)}
for i in range(m):
x, y = next(it), next(it)
g[x].append((y, i))
g[y].append((x, i))
ins[x] += 1
ins[y] += 1
for i in range(1, n + 1):
if ins[i] % 2 != 0:
with open('ciclueuler.out', 'wt') as fout:
fout.write('{}\n'.format(-1))
exit(0)
euler_path = []
solve(g, n, m, euler_path)
with open('ciclueuler.out', 'wt') as fout:
for x in euler_path[:-1]:
fout.write('{} '.format(x))
fout.write('\n')