만드는 중입니다

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

피자 배달 최소 시간

면접 대비

시간 제한1초메모리 제한128 MB

요약
피자가게와 최대 10개의 배달 지점 사이의 방향성 이동 시간이 주어질 때, 가게에서 출발해 모든 지점을 들르고 돌아오는 최단 경로를 구한다.
난이도

보통10점 중 6점

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

문제

한 피자 가게는 주문한 피자를 가능한 한 빠르게 배달하고 싶어 하지만, 고용할 수 있는 배달 기사는 단 한 명뿐이다. 기사는 배달을 시작하기 전에 주문이 11개 이상 1010개 이하로 모일 때까지 기다린다. 기사는 가게에서 출발하여 주문이 들어온 모든 위치에 배달한 뒤 다시 가게로 돌아오는, 가장 짧은 경로를 찾고 싶어 한다. 경로가 더 짧아진다면 도중에 같은 위치나 가게를 여러 번 지나가도 된다. 필요한 최소 총 이동 시간을 구하는 프로그램을 작성하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 배달할 위치의 수를 나타내는 정수 nn이 주어지며, 1≤n≤101 \le n \le 10이다. 이어지는 n+1n + 1개의 줄에는 각각 n+1n + 1개의 정수가 주어지는데, 이는 가게(번호 00)와 nn개의 배달 위치(번호 11부터 nn까지) 사이의 직접 이동 시간을 나타낸다. ii번째 줄의 jj번째 값은 다른 곳을 거치지 않고 위치 ii에서 위치 jj로 곧바로 이동하는 데 걸리는 시간이다. 일방통행, 속도 제한, 교통 상황 등으로 인해 다른 위치를 거쳐 가는 편이 직접 가는 것보다 빠를 수 있으며, ii에서 jj로 가는 직접 이동 시간과 jj에서 ii로 가는 직접 이동 시간은 서로 다를 수 있다. n=0n = 0인 줄은 입력의 끝을 나타내며, 테스트 케이스가 아니다.

출력

각 테스트 케이스마다, 가게에서 출발하여 nn개의 모든 위치에 배달하고 다시 가게로 돌아오는 데 필요한 최소 총 이동 시간을 정수 하나로 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    0 1 10 10
    1 0 1 2
    10 1 0 10
    10 2 10 0
    0
    
    예상 출력
    8