도로 공사
시간 제한0.5초메모리 제한1024 MB
기존 경로를 따라 도로를 건설하고, 철거한 도로의 길이만큼 자원을 충당해 지름길을 놓을 때, 1번 마을에서 N번 마을까지 이동 거리의 최솟값을 구한다.
문제
평면 위에 번부터 번까지 총 개의 마을이 있다. 번 마을의 좌표는 이고, 각 마을의 좌표는 서로 다르다.
두 마을 사이에는 둘만을 연결하는 도로를 지을 수 있고, 이 도로의 길이는 두 마을 사이의 유클리드 거리[1]와 같다. 처음에 번 마을과 번 마을을 연결하는 도로가 하나씩 존재한다.
여러분은 초기 건설 자원이 인 상태에서, 다음 2가지 공사를 각각 원하는 만큼 수행할 수 있다.
- 현재 설치된 도로 중 하나를 철거한다. 이때 건설 자원이 철거한 도로의 길이만큼 늘어난다.
- 원하는 두 마을을 연결하는 도로를 건설한다. 이때 건설 자원이 도로의 길이만큼 소모되며, 소모할 건설 자원이 부족하면 건설할 수 없다.
번 마을에서 번 마을에 도착하기까지 도로만을 이용하여 이동할 때, 지나는 도로의 총 길이의 최솟값을 구하여라.
입력
첫 번째 줄에 마을의 개수 이 주어진다.
두 번째 줄부터 개의 줄에 걸쳐 마을의 좌표가 주어진다. 그중 번째 줄에는 번 마을의 좌표를 나타내는 정수 , 가 공백으로 구분되어 주어진다. 각 마을의 좌표는 서로 다르다.
출력
첫 번째 줄에 번 마을에서 번 마을에 도착하기까지 지나는 도로의 총 길이의 최솟값을 출력한다. 절대/상대 오차는 까지 허용한다.
힌트
[1] 평면 위에서 와 의 유클리드 거리는 이다.