배달 경로

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

요약
농장 1부터 N까지 순서대로 방문한 뒤 다시 1로 돌아오는 경로 중 다른 농장 칸을 밟지 않으면서 최단인 것을 구하고, 불가능하면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
BFS, 최단 경로, 기하, 구현
정답자
아직 제출이 없습니다

문제

수년간 기록적인 우유 생산량을 달성한 축산업자 존(Farmer John)은 이제 NN개(1≤N≤1001 \le N \le 100)의 농장으로 이루어진 네트워크를 운영한다. 농장 ii는 2차원 평면 위의 위치 (xi,yi)(x_i, y_i)에 있으며, 모든 농장의 위치는 서로 다르고 xix_i와 yiy_i는 모두 정수이다.

존은 매일 NN개의 농장에 물자를 배달하는 경로를 계획하려 한다. 그는 농장 1에서 출발하여 농장을 번호 순서대로(농장 1 다음 농장 2, 그다음 농장 3 …) 방문하고, 농장 NN을 방문한 뒤 다시 농장 1로 돌아온다. 존은 한 번에 북·남·동·서 중 한 방향으로 한 칸 이동할 수 있으며, 한 칸을 이동하는 데 1분이 걸린다. 또한 존은 전체 여정 동안 각 농장을 정확히 한 번씩만 방문하려 한다(물론 출발지이자 도착지인 농장 1만은 두 번 방문한다). 다시 말해, 어떤 농장에서 다른 농장으로 이동하는 도중에는 다른 농장이 있는 칸을 밟을 수 없다.

존이 전체 배달 경로를 완주하는 데 걸리는 최소 시간을 구하여라.

입력

  • 첫째 줄: 농장의 수 NN.
  • 둘째 줄부터 NN개의 줄: i+1i+1번째 줄에는 두 정수 xix_i와 yiy_i가 공백으로 구분되어 주어진다 (1≤xi,yi≤1061 \le x_i, y_i \le 10^6).

출력

  • 첫째 줄: 존이 배달 경로를 완주하는 데 필요한 최소 시간(분). (농장 1을 제외하고) 각 농장을 정확히 한 번씩 방문하는 경로가 존재하지 않으면 −1-1을 출력한다.

힌트

첫 번째 예제에서 존은 12분 만에 배달 경로를 완주할 수 있다. 농장 1에서 농장 2까지 2분, 농장 2에서 농장 3까지 5분(농장 1을 우회), 농장 3에서 농장 4까지 3분, 마지막으로 농장 1로 돌아오는 데 2분이 걸린다.

예제1

  1. 예제 1

    입력
    4
    2 2
    2 4
    2 1
    1 3
    
    예상 출력
    12