던전 리모델링
시간 제한2초메모리 제한1024 MB
격자 모양 던전의 방들이 트리를 이룰 때, 출입구 하나를 막고 새 출입구를 하나 뚫어 (1, 1)에서 (h, w)까지 경로에 놓이는 방의 수를 최대로 만드는 문제입니다.
문제
이카프카의 여왕은 성에서 평화롭게 지내고 있었다. 어느 날 여왕은 다른 나라에서 많은 비밀 요원이 활동하고 있다는 소식을 듣고 성의 보안이 걱정되었다.
성에는 개의 행과 개의 열로 이루어진 직사각형 던전이 있다. 인접한 방은 벽으로 나뉘어 있고, 일부 벽에는 양쪽 방을 잇는 문이 있다. 입구와 출구는 던전의 대각선 방향 양 끝 모서리에 있는 두 방이다. 방들은 트리를 이룬다. 즉, 출구 방에는 모든 방에서 유일한 경로로 도달할 수 있으며, 그 경로는 각 방을 한 번씩만 지난다.
보안을 강화하려고 여왕은 트리 성질을 유지한 채 던전을 재건축하려 한다. 비용 제한 때문에 할 수 있는 일은 기존 문 하나를 막아 사용할 수 없게 만드는 것과, 어느 벽에 새 문을 하나 내는 것뿐이다. 새 문은 막은 문과 같은 벽에 낼 수도 있다.
입구에서 출구까지 이어지는 경로에 포함된 방의 수가 최대가 되도록 던전을 재건축하는 방법을 찾으시오.
입력
첫 줄에 두 정수 와 가 주어진다 ().
이어서 문자 격자로 던전이 주어진다. 각 문자의 의미는 다음과 같다.
- 는 , 에 대해
.이다. 번째 행, 번째 열의 방 를 나타낸다. - 는 , 에 대해
.또는-이다. 방 와 사이의 벽을 나타내며,.이면 문이 있고-이면 문이 없다. - 은 , 에 대해
.또는|이다. 방 와 사이의 벽을 나타내며,.이면 문이 있고|이면 문이 없다. - 와 는
-이고, 과 은|이다. 던전의 바깥벽이다. - 은 , 에 대해
+이다. 벽이나 바깥벽이 만나는 교차점이다.
입구는 방 , 출구는 방 이다. 주어진 던전은 트리 성질을 만족한다.
출력
재건축 후 입구에서 출구까지 경로 길이의 최댓값을 출력한다. 경로의 길이는 입구와 출구를 포함해 경로 위에 있는 방의 개수이다.
힌트
첫 번째 예시에서는 방 과 사이의 문을 막고, 과 사이에 새 문을 내면 에서 까지의 유일한 경로가 방 6개를 모두 지난다. 이것이 분명한 최댓값이다.
두 번째 예시에서는 어떻게 재건축하더라도 에서 까지 유일한 경로의 길이가 정확히 4로 유지된다.
세 번째 예시에서 최적의 방법 중 하나는 방 와 사이의 문을 막고, 와 사이에 새 문을 내는 것이다. 재건축 후의 던전은 다음과 같다.
+-+-+-+ +-+-+-+ +-+-+-+-+-+
|.|...| |...|.| |...|...|.|
+.+.+.+ +.+.+.+ +-+.+.+.+.+
|...|.| |.|...| |...|.|.|.|
+-+-+-+ +-+-+-+ +.+.+.+.+.+
|.|...|.|.|
+.+.+-+.+.+
|.|.|...|.|
+-+.+.+-+.+
|...|.....|
+-+-+-+-+-+