해류
시간 제한1초메모리 제한256 MB
각 칸에 해류 방향이 정해진 격자에서 해류를 따라가면 비용이 0, 다른 여덟 방향으로 움직이면 비용이 1일 때 시작점에서 도착점까지 필요한 최소 에너지를 구한다.
문제
넓은 수역 위의 배에게 강한 해류는 위험할 수 있지만, 신중히 계획하면 배가 목적지에 도달하도록 해류를 이용할 수도 있다. 당신이 할 일은 그 계획을 돕는 것이다.
각 위치에서 해류는 어떤 방향으로 흐른다. 선장은 해류의 흐름을 그대로 타고 에너지를 전혀 쓰지 않고 이동하거나, 그 외의 방향으로 한 칸 이동하는 데 에너지 1을 쓸 수 있다. 배는 항상 북, 남, 동, 서, 북동, 북서, 남동, 남서의 여덟 방향 중 하나로 움직인다. 배는 호수의 경계를 벗어날 수 없다. 최소 에너지로 목적지에 도달하는 전략을 세우도록 도와라.
입력
호수는 직사각형 격자로 표현된다. 입력의 첫째 줄에는 격자의 행의 수 과 열의 수 가 주어진다. 격자의 행과 열은 각각 최대 1000개이다. 이어지는 개의 줄에는 각각 정확히 개의 문자가 있으며, 각 문자는 부터 까지의 숫자이다. 문자 은 해류가 북쪽(격자에서 위쪽, 즉 행 번호가 감소하는 방향)으로 흐름을, 은 북동쪽, 는 동쪽(열 번호가 증가하는 방향), 은 남동쪽을 뜻하며, 아래와 같이 시계 방향으로 이어진다.
7 0 1
\|/
6-*-2
/|\
5 4 3
격자 다음 줄에는 이동의 횟수 이 하나의 정수로 주어지며, 은 최대 50이다. 이어지는 개의 줄에는 각 이동이 네 정수 , , , 로 주어지는데, 이는 각각 출발점과 도착점의 행과 열이다. 행과 열의 번호는 부터 시작한다.
출력
각 이동마다, 출발점에서 도착점까지 가는 데 필요한 최소 에너지 양을 하나의 정수로 한 줄에 출력한다.