마법의 미로
시간 제한1.5초메모리 제한512 MB
한 방향 통로로 이루어진 격자 미로에서 입구에서 출구까지 가는 경로에 놓인 방 두 개 (x, y)의 순서쌍 중 x에서 y로 갈 수 있는 쌍의 개수를 구합니다.
문제
매기네 반이 미로로 소풍을 갔다. 미로는 높이 미터, 너비 미터의 직사각형이며, 한 변이 미터인 정사각형 방 개로 이루어져 있다. 변을 맞댄 두 방 사이에는 한쪽 방향으로만 통하는 통로가 있다. 수리 때문에 일부 통로는 막혀 있다. 입구에서 출구에 도달할 수 있는지조차 알려지지 않았다.
입장하기 전에 매기는 각 통로의 방향과 막힌 통로가 표시된 지도를 받는다. 입구는 왼쪽 위 방이고, 출구는 오른쪽 아래 방 하나뿐이다. 지도에는 미로 안에서 영원히 맴돌 수 없다는 정보도 나와 있다. 어떤 방이든 어떤 통로로 떠나면 그 방으로 다시 돌아올 수 없다.
매기는 입구에서 출발해 미로를 지나 출구로 나가려 한다. 또 방문한 방 중 좋아하는 방 두 개의 번호를 방문한 순서대로 적는다. 같은 방을 두 번 적을 수도 있다. 미로를 빠져나가지 못하면 매기는 실망하고 아무것도 적지 않는다. 지도가 주어졌을 때, 매기가 두 번호를 적는 서로 다른 방법의 수를 구하라.
입력
첫 줄에 공백으로 구분된 두 정수 과 이 주어진다 (). 이어지는 개의 줄에 미로 지도가 주어진다.
번째 줄 ()은 번째 행에서 이웃한 방 사이의 통로를 나타내는 길이 의 문자열이며, 문자는 {>, <, *} 중 하나다. 번째 문자가 >이면 번째 방에서 번째 방으로 가는 통로가 있다. <이면 번째 방에서 번째 방으로 가는 통로가 있다. *이면 양방향 모두 통로가 없다.
번째 줄 ()은 번째 행과 번째 행 사이의 통로를 나타내는 길이 의 문자열이며, 문자는 {v, ^, *} 중 하나다. 번째 문자가 v이면 번째 행의 번째 방에서 번째 행의 번째 방으로 가는 통로가 있다. ^이면 반대 방향 통로가 있다. *이면 양방향 모두 통로가 없다.
입구는 첫 번째 행의 첫 번째 방이고, 출구는 마지막 행의 마지막 방이다.
출력
매기가 방문한 두 방의 번호를 방문한 순서대로 적는 방법의 수를 한 줄에 출력한다. 출구에 도달할 수 없으면 0을 출력한다.
힌트
출구에 도달하는 방법은 한 가지뿐이다. 오른쪽으로 두 번 간 다음 아래로 한 번 내려간다.