2차원 평면의 점들이 주어질 때, 각 이동의 잘라낸 유클리드 거리가 소수여야 한다는 조건 아래 시작점에서 목표점까지 가는 최단 경로를 구한다.
보통6그래프최단 경로정수론완전 탐색면접 대비아직 제출이 없습니다시간 제한2초메모리 제한256 MB소수 마을 주민은 아주 특이한 규칙을 지킨다. 가려는 곳까지의 거리가 소수일 때만 그곳으로 간다는 규칙이다.
소수 마을 주민 승욱이는 멀리 떨어진 A마을에 볼일이 있어 그곳까지 가야 한다. 소수 마을에서 A마을까지 한 번에 가고 싶지만 두 마을 사이의 거리가 소수가 아니면 그럴 수 없다. 이때는 다른 마을을 경유해서 가야 한다. 경유하는 마을로 갈 때도 현재 위치에서 그 마을까지의 거리가 소수여야 한다.
소수 마을과 경유할 수 있는 마을, A마을의 위치가 좌표평면 위의 점으로 주어진다. 승욱이가 규칙을 지키면서 A마을까지 가는 가장 짧은 길을 찾도록 도와주자.
마을 사이의 거리는 두 점 사이의 거리에서 정수 부분만 취급한다. 예를 들어 거리가 3.1415이면 소수점 아래를 버려 3으로 취급한다. 소수인지 판정할 때와 이동한 거리를 더할 때 모두 이렇게 버림한 값을 쓴다.
첫째 줄에 소수 마을의 위치 (X1,Y1)과 A마을의 위치 (X2,Y2)가 X1 Y1 X2 Y2 순서로 주어진다.
둘째 줄에 경유할 수 있는 마을의 개수 N이 주어진다. (0≤N≤4000)
셋째 줄부터 N개의 줄에 경유할 수 있는 마을의 위치 X3 Y3이 한 줄에 하나씩 주어진다.
모든 마을의 좌표는 절댓값이 3000을 넘지 않는 정수이다.
소수 마을의 규칙을 지키면서 A마을까지 가는 방법 중 가장 짧은 길의 거리 합을 출력한다. 거리 합은 각 이동의 버림한 거리를 더한 정수이다.
규칙을 지켜서 A마을까지 갈 수 있는 방법이 없으면 −1을 출력한다.

첫 번째 예제에서 소수 마을 (1,2)와 A마을 (5,4) 사이의 거리는 20≈4.47이므로 4로 취급하고, 4는 소수가 아니다. 마을 C (4,1)을 경유하면 두 번의 이동 거리가 모두 10≈3.16, 즉 3이므로 거리 합은 6이다.