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

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

비퍼 수집하기

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

요약
최대 8개의 비퍼 위치와 시작점이 주어질 때, 모든 비퍼를 방문하고 돌아오는 최소 맨해튼 거리 경로를 구한다.
난이도

보통10점 중 6점

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

문제

카렐(Karel)은 각 위치가 정수 좌표 (x,y)(x, y)로 표현되는 직사각형 좌표계에 사는 로봇입니다. 이 세계 곳곳에는 비퍼(beeper)가 놓여 있고, 카렐은 이들을 모두 주워야 합니다. 카렐은 xx축 또는 yy축 방향으로만 이동할 수 있으며, 대각선으로는 이동할 수 없습니다. 인접한 위치로 한 칸 이동하면 거리 11이 소모되므로, 두 위치 사이의 이동 거리는 두 좌표의 맨해튼 거리(각 좌표 차이의 절댓값의 합)와 같습니다.

카렐은 시작 위치에서 출발하여 비퍼가 놓인 모든 위치를 방문한 뒤 다시 시작 위치로 돌아와야 합니다. 카렐이 이동하는 전체 경로의 최소 길이를 구하세요. 비퍼를 방문하는 순서는 자유롭게 정할 수 있습니다.

입력

첫째 줄에 시나리오의 개수가 주어집니다. 각 시나리오는 다음과 같이 구성됩니다.

  • 첫째 줄: 세계의 크기를 나타내는 두 정수 (가로 크기와 세로 크기)
  • 둘째 줄: 카렐의 시작 위치를 나타내는 두 정수 xx, yy
  • 셋째 줄: 비퍼의 개수 nn
  • 이어지는 nn개의 줄: 각 비퍼의 좌표를 나타내는 두 정수 xx, yy

출력

각 시나리오마다 한 줄씩, 카렐이 시작 위치에서 출발해 모든 비퍼를 방문하고 다시 시작 위치로 돌아오는 최소 이동 거리를 다음 형식으로 출력합니다.

The shortest path has length D

여기서 DD는 최소 이동 거리입니다.

제한

  • 1≤1 \le 세계의 크기 ≤9\le 9
  • 1≤1 \le 비퍼의 개수 ≤8\le 8
  • 1≤x,y≤1 \le x, y \le 세계의 크기

예제2

  1. 예제 1

    입력
    1
    10 10
    1 1
    4
    2 3
    5 5
    9 4
    6 5
    
    예상 출력
    The shortest path has length 24
    
  2. 예제 2

    입력
    1
    9 9
    1 1
    1
    5 5
    
    예상 출력
    The shortest path has length 16