만드는 중입니다

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

도시 관광

시간 제한2초메모리 제한512 MB

요약
1번 도시에서 출발해 모든 도시를 한 번씩 방문하고 모든 교통수단을 한 번씩 사용하는 순회 경로의 최소 시간과 최대 시간을 구합니다.
난이도

보통10점 중 5점

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

문제

Albert는 방학 동안 NN개의 도시를 방문할 계획이다. 편의상 도시에는 1번부터 NN번까지 번호가 붙어 있다. NN개의 도시는 기차, 비행기, 유람선, 버스 등 여러 교통수단으로 연결되어 있다. 교통수단도 NN개가 있으며, 편의상 1번부터 NN번까지 번호가 붙어 있다.

Dk,i,jD_{k,i,j}는 도시 ii에서 도시 jj로 kk번째 교통수단을 타고 이동할 때 걸리는 시간이다. 이 값이 0이면 해당 교통수단으로는 ii에서 jj로 이동할 수 없다. 항상 Dk,i,j=Dk,j,iD_{k,i,j} = D_{k,j,i}이다.

예를 들어 N=3N = 3이고, D1,⋅,⋅=[[0,1,3],[1,0,4],[3,4,0]]D_{1,\cdot,\cdot} = [[0, 1, 3], [1, 0, 4], [3, 4, 0]], D2,⋅,⋅=[[0,2,2],[2,0,4],[2,4,0]]D_{2,\cdot,\cdot} = [[0, 2, 2], [2, 0, 4], [2, 4, 0]], D3,⋅,⋅=[[0,3,8],[3,0,4],[8,4,0]]D_{3,\cdot,\cdot} = [[0, 3, 8], [3, 0, 4], [8, 4, 0]]이라 하자.

  • D1,1,2=1D_{1,1,2} = 1이므로 1번 교통수단으로 도시 1에서 도시 2로 가면 1 단위 시간이 걸린다.
  • D2,3,1=2D_{2,3,1} = 2이므로 2번 교통수단으로 도시 3에서 도시 1로 가면 2 단위 시간이 걸린다.
  • D3,2,3=4D_{3,2,3} = 4이므로 3번 교통수단으로 도시 2에서 도시 3으로 가면 4 단위 시간이 걸린다.

여러 교통수단과 일정을 알아보던 Albert는 1번 도시에서 출발해 각 교통수단을 정확히 한 번씩 이용하고, 각 도시를 정확히 한 번씩 방문한 뒤 1번 도시로 돌아오는 방법 중 가장 적게 걸리는 경우와 가장 오래 걸리는 경우를 알고 싶어 한다.

위 예제에서 도시 1 -> 도시 2 -> 도시 3 -> 도시 1로 이동하는 방법을 생각해 보자.

  • 교통수단을 1, 2, 3 순서로 쓰면 D1,1,2+D2,2,3+D3,3,1=1+4+8=13D_{1,1,2} + D_{2,2,3} + D_{3,3,1} = 1 + 4 + 8 = 13 단위 시간이 걸린다.
  • 교통수단을 1, 3, 2 순서로 쓰면 D1,1,2+D3,2,3+D2,3,1=1+4+2=7D_{1,1,2} + D_{3,2,3} + D_{2,3,1} = 1 + 4 + 2 = 7 단위 시간이 걸린다. 이 예제에서 가장 적게 걸리는 방법이다.
  • 교통수단을 2, 1, 3 순서로 쓰면 D2,1,2+D1,2,3+D3,3,1=2+4+8=14D_{2,1,2} + D_{1,2,3} + D_{3,3,1} = 2 + 4 + 8 = 14 단위 시간이 걸린다. 이 예제에서 가장 오래 걸리는 방법이다.
  • 그 밖의 순서로도 각 교통수단을 한 번씩 이용하고 각 도시를 한 번씩 방문해 돌아올 수 있다.

위 예제의 답은 7과 14이다. 정수 NN과 3차원 배열 DD가 주어질 때, 위 조건을 만족하며 관광할 때 걸리는 최소 시간과 최대 시간을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 NN이 주어진다. 이어서 N2N^2개의 줄에 각 줄마다 공백으로 구분된 정수 NN개가 주어진다. 처음 NN개의 줄은 1번 교통수단의 D1,⋅,⋅D_{1,\cdot,\cdot}이며, 첫 줄은 i=1i = 1, 다음 줄은 i=2i = 2인 경우이다. 그다음 NN개의 줄은 2번 교통수단의 값이며, 이런 식으로 NN번 교통수단까지 순서대로 주어진다.

출력

각 테스트 케이스마다 최소 시간과 최대 시간을 공백으로 구분해 한 줄에 출력한다. 조건을 만족하는 방법이 없으면 "0 0"을 출력한다.

제한

  • 1≤T≤101 \le T \le 10
  • 2≤N≤82 \le N \le 8
  • 모든 1≤i,j,k≤N1 \le i, j, k \le N에 대해 0≤Dk,i,j≤1060 \le D_{k,i,j} \le 10^6
  • 모든 1≤i,j,k≤N1 \le i, j, k \le N에 대해 Dk,i,j=Dk,j,iD_{k,i,j} = D_{k,j,i}가 보장된다.
  • 모든 1≤i,k≤N1 \le i, k \le N에 대해 Dk,i,i=0D_{k,i,i} = 0이 보장된다.

예제1

  1. 예제 1

    입력
    4
    2
    0 9
    9 0
    0 3
    3 0
    2
    0 0
    0 0
    0 1
    1 0
    3
    0 1 3
    1 0 4
    3 4 0
    0 2 2
    2 0 4
    2 4 0
    0 3 8
    3 0 4
    8 4 0
    4
    0 1 2 3
    1 0 4 5
    2 4 0 6
    3 5 6 0
    0 2 3 5
    2 0 7 11
    3 7 0 13
    5 11 13 0
    0 1 3 3
    1 0 7 0
    3 7 0 0
    3 0 0 0
    0 0 3 5
    0 0 7 9
    3 7 0 1
    5 9 1 0
    
    예상 출력
    12 12
    0 0
    7 14
    10 26