Treasure Hunter
면접 대비시간 제한1초메모리 제한1024 MB
m×n 격자에 있는 k개의 보물 칸이 주어질 때, (1,1)에서 (m,n)까지 오른쪽과 아래로만 이동하는 경로 여러 개로 모든 보물을 덮는 최소 경로 수를 구한다.
문제
철수는 격자의 각 칸 위치로 표시된 개의 보물 위치가 적힌 보물 지도를 가지고 있다. 지도에서 입구와 출구를 제외한 모든 위치는 사람이 접근하기 어렵기 때문에, 철수는 보물 사냥 로봇(THR)을 이용해 보물에 접근하여 수집하려고 한다. THR은 항상 입구 칸 에서 출발하여 출구 칸 으로 나간다. 여기서 는 번째 행, 번째 열의 칸을 나타낸다. 또한 THR은 현재 칸에서 바로 오른쪽 또는 아래로만 이동할 수 있고, 출구 칸에 도착한 뒤에는 다시 사용할 수 없다. 다음 그림은 , , 인 경우의 예이다. 그림에서 는 보물이 있는 칸을 나타낸다.
위 예에서 THR이 , , , , , , 순서로 칸에 접근하면, 출구 칸 에 도착한 뒤 세 개의 보물(, , 에 있는 보물)을 수집한다. 이때 위치의 보물을 수집하려면 THR을 하나 더 사용해야 한다. , , 와 서로 다른 개의 보물 위치가 주어질 때, 지도 위의 모든 보물을 수집하기 위해 필요한 THR의 최소 개수를 구하는 프로그램을 작성하시오.
입력
프로그램은 표준 입력에서 입력을 읽는다. 입력의 첫 줄에는 세 정수 , , 가 주어진다(). 은 행의 수, 은 지도의 열의 수, 는 지도 위의 보물의 수이다. 다음 개의 줄에는 서로 다른 개의 보물 위치가 두 정수로 주어지며, 두 정수는 각각 지도에서의 행 위치와 열 위치를 나타낸다.
출력
프로그램은 표준 출력에 출력을 쓴다. 정확히 한 줄을 출력한다. 그 줄에는 지도 위의 모든 보물을 수집하기 위해 필요한 THR의 최소 개수를 출력한다.