비퍼 수집하기
시간 제한1초메모리 제한128 MB
최대 8개의 비퍼 위치와 시작점이 주어질 때, 모든 비퍼를 방문하고 돌아오는 최소 맨해튼 거리 경로를 구한다.
문제
카렐(Karel)은 각 위치가 정수 좌표 로 표현되는 직사각형 좌표계에 사는 로봇입니다. 이 세계 곳곳에는 비퍼(beeper)가 놓여 있고, 카렐은 이들을 모두 주워야 합니다. 카렐은 축 또는 축 방향으로만 이동할 수 있으며, 대각선으로는 이동할 수 없습니다. 인접한 위치로 한 칸 이동하면 거리 이 소모되므로, 두 위치 사이의 이동 거리는 두 좌표의 맨해튼 거리(각 좌표 차이의 절댓값의 합)와 같습니다.
카렐은 시작 위치에서 출발하여 비퍼가 놓인 모든 위치를 방문한 뒤 다시 시작 위치로 돌아와야 합니다. 카렐이 이동하는 전체 경로의 최소 길이를 구하세요. 비퍼를 방문하는 순서는 자유롭게 정할 수 있습니다.
입력
첫째 줄에 시나리오의 개수가 주어집니다. 각 시나리오는 다음과 같이 구성됩니다.
- 첫째 줄: 세계의 크기를 나타내는 두 정수 (가로 크기와 세로 크기)
- 둘째 줄: 카렐의 시작 위치를 나타내는 두 정수 ,
- 셋째 줄: 비퍼의 개수
- 이어지는 개의 줄: 각 비퍼의 좌표를 나타내는 두 정수 ,
출력
각 시나리오마다 한 줄씩, 카렐이 시작 위치에서 출발해 모든 비퍼를 방문하고 다시 시작 위치로 돌아오는 최소 이동 거리를 다음 형식으로 출력합니다.
The shortest path has length D
여기서 는 최소 이동 거리입니다.
제한
- 세계의 크기
- 비퍼의 개수
- 세계의 크기