한꺼번에 길 찾기

NYPC 2017 · 예선 스테이지 3

22차원 평면상의 격자 모양 지도에서 주어진 물체가 목적지로 가는 최단 경로는 다익스트라 혹은 A* 알고리즘을 사용하여 계산할 수 있다. 그런데 실시간 전략 시뮬레이션 게임의 경우처럼, 여러 개의 유닛들이 동시에 움직이고 두 개 이상의 유닛이 동시에 한 칸에 함께 머무를 수 없다면 유닛들이 장애물의 역할을 하기 때문에 위의 알고리즘을 단순히 적용하여 계산하기는 어렵다.

아래와 같은 조건에서 모든 유닛을 해당 목적지까지 빠르게 이동하는 프로그램을 작성해 보자.

입력 형식

첫 줄에 지도의 세로 크기 HH와 가로 크기 WW가 주어진다. (1H1001 \le H \le 100, 1W1001 \le W \le 100)

두번째 줄부터 HH개의 줄에 걸쳐, 각 줄마다 WW개의 글자로 구성된 지도가 입력된다. 지도에 있는 모든 글자는 #, ., A, B, a, b 중 하나이다. 지도를 읽는 규칙은 다음과 같다.

모든 테스트케이스에 대해, 입력 데이터가 어떤 식으로 구성되어 있는지 추상적으로 보여주는 그림 파일을 제공한다. 즉, 입력 데이터가 정확히 그림과 일치하지 않을 수 있다. 그림 파일은 다음과 같은 형식을 따른다.

그림 파일은 여기서 다운받을 수 있다. (링크)

출력 형식

예제 1

입력

2 5 bAB.a #..##

출력

4 1 1 3 D 2 1 2 R 2 3 L 2 1 3 R 2 2 U 2 1 4 R 1 2 L

예제 2

입력

3 5 AB... A###. b..aa

출력

6 1 2 1 D 2 1 1 D 3 1 R 3 1 2 L 2 1 D 3 2 R 3 1 1 D 3 1 R 3 3 R 3 2 1 D 3 2 R 3 4 R 1 3 3 R

채점 방식

각 테스트케이스의 점수는 아래와 같이 계산된다.

최종 점수는 모든 테스트케이스 점수의 합이다. 이와 같은 채점 방식 때문에 제출한 이후에 점수가 계속 변할 수 있다.

해설