백준 14889 - 스타트와 링크 (파이썬)

Updated:

Answer

from itertools import combinations

n = int(input())
p = n // 2
s = [list(map(int, input().split())) for _ in range(n)]
people = [i for i in range(n)]
combi = list(combinations(people, p))

for i in range(n):
    for j in range(i):
        s[j][i] += s[i][j]

answer = 10000

for i in range(len(combi) // 2):
    a = 0
    for j in range(p):
        for k in range(j + 1, p):
            a += s[combi[i][j]][combi[i][k]]

    b = 0
    for j in range(p):
        for k in range(j + 1, p):
            b += s[combi[-i-1][j]][combi[-i-1][k]]
            
    answer = min(answer, abs(a - b))
    
print(answer)

Categories:

Updated: