만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

경제적인 일방통행 도로

시간 제한5초메모리 제한1024 MB

요약
도시가 최대 18개이고 방향별 도로 비용이 주어질 때, 모든 도로의 방향을 정해 어느 도시에서든 다른 도시로 갈 수 있게 하는 최소 비용을 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

RUN 나라에는 NN개의 도시가 있고, 일부 도시 사이는 양방향 도로로 연결되어 있다. 각 도로는 서로 다른 두 도시를 잇고, 같은 도시 쌍을 잇는 도로는 두 개 이상 없다. 모든 도시가 도로를 따라 서로 갈 수 있다는 보장은 없다.

교통 문제 때문에 RUN의 시장은 모든 도로를 일방통행으로 바꾸기로 했다. 방향을 정한 뒤에도 어느 도시에서든 다른 모든 도시로 한 개 이상의 도로를 따라 이동할 수 있어야 한다. 시장은 비용을 최대한 아끼려고 이 조건을 만족하는 방향 설정 중 비용이 가장 작은 것을 고른다. 도로의 방향을 정하는 비용은 도로 자체와 그 도로가 향하는 방향에 따라 달라진다.

입력

첫 줄에 도시의 수 NN이 주어진다. (2≤N≤182 \leq N \leq 18)

이어지는 NN개 줄에는 각각 공백으로 구분된 정수 NN개가 주어진다. (i+1)(i+1)번째 줄의 jj번째 정수 aija_{ij}는 도시 ii에서 도시 jj로 향하도록 도로를 정할 때의 비용이다. 두 도시 사이에 도로가 없으면 −1-1이다.

모든 ii에 대해 aii=−1a_{ii} = -1이다. 서로 다른 두 도시 ii, jj에 대해 aij=aji=−1a_{ij} = a_{ji} = -1이거나, 0≤aij,aji≤1060 \leq a_{ij}, a_{ji} \leq 10^6이다.

출력

모든 도로의 방향을 조건을 만족하도록 정했을 때 필요한 최소 비용을 출력한다. 조건을 만족하는 방향 설정이 불가능하면 −1-1을 출력한다.

예제2

  1. 예제 1

    입력
    4
    -1 3 2 -1
    3 -1 7 7
    5 9 -1 9
    -1 6 7 -1
    
    예상 출력
    27
    
  2. 예제 2

    입력
    6
    -1 1 2 -1 -1 -1
    3 -1 4 -1 -1 -1
    5 6 -1 0 -1 -1
    -1 -1 0 -1 6 5
    -1 -1 -1 4 -1 3
    -1 -1 -1 2 1 -1
    
    예상 출력
    -1