https://www.acmicpc.net/problem/14889
#14889: 시작 및 연결
예시 2의 경우 팀을 (1, 3, 6), (2, 4, 5)에, 예시 3의 경우 (1, 2, 4, 5), (3, 6, 7, 8)에 팀을 넣을 수 있습니다. ) 팀을 분할
www.acmicpc.net

설명
1. N의 수가 적기 때문에 조합을 사용하여 경우의 수를 구합니다.
2. 전체 검색 시작, 연결 팀 간의 포인트 차이 최소값 찾기
import sys
from itertools import combinations
input = sys.stdin.readline
N = int(input())
array = (list(map(int,input().split())) for _ in range(N))
num_list = (i for i in range(N))
com_list=list(combinations(num_list,N//2))
answer = int(1e9)
for cand in com_list:
start=cand
link =list(set(num_list)-set(cand)) # set 함수를 이용한 나머지 팀원 구하기
start_comb = list(combinations(start,2))
link_comb = list(combinations(link,2))
s_score=0
l_score=0
for star in start_comb:
s_score +=array(star(0))(star(1))+array(star(1))(star(0))
for lin in link_comb:
l_score +=array(lin(0))(lin(1))+array(lin(1))(lin(0))
answer = min(answer,abs(s_score-l_score))
print(answer)