Cod sursa(job #2869659)

Utilizator MateiDorian123Nastase Matei MateiDorian123 Data 11 martie 2022 18:50:44
Problema Ciclu hamiltonian de cost minim Scor 45
Compilator py Status done
Runda Arhiva educationala Marime 0.75 kb
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()