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

첫 번째 예제에서 소수 마을 와 A마을 사이의 거리는 이므로 로 취급하고, 는 소수가 아니다. 마을 C 을 경유하면 두 번의 이동 거리가 모두 , 즉 이므로 거리 합은 이다.