Pagini recente » Cod sursa (job #2183883) | Cod sursa (job #1265723) | Cod sursa (job #12181) | Cod sursa (job #457145) | Cod sursa (job #2869659)
f = open("hamilton.in")
n, m = f.readline().split()
n = int(n)
m = int(m)
inf = 100000005;
a = [[] for i in range(n)]
c = [[inf for j in range(n)] for i in range(2 ** n)]
for edge in f.readlines():
x, y, z = edge.split()
x = int(x)
y = int(y)
z = int(z.strip())
a[y].append((x, z))
f.close();
c[1][0] = 0;
for i in range(2 ** n):
for j in range(n):
if i & (1 << j):
for edge in a[j]:
if i & (1 << edge[0]):
c[i][j] = min(c[i][j], c[i & ~(1 << j)][edge[0]] + edge[1]);
sol = inf
for edge in a[0]:
sol = min(sol, c[2 ** n - 1][edge[0]] + edge[1])
if sol == inf:
sol = -1
f = open("hamilton.out", "w")
f.write(str(sol))
f.close()