아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

피자 배달 최소 시간

면접 대비

시간 제한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