Nowruz 7
시간 제한1초메모리 제한512 MB
격자에서 자유 칸 일부를 막아 임의의 두 자유 칸 사이에 단순 경로가 정확히 하나만 존재하는 미로를 만들고, 자유 이웃이 정확히 하나인 칸의 수를 최대화한다.
문제
이제 며칠 뒤면 Nowruz(페르시아의 새해)라서 할아버지가 가족을 정원에 초대했다. 손님 중에는 아이가 명 있다. 아이들이 더 재미있게 놀 수 있도록 할아버지는 숨바꼭질 놀이를 하려고 한다.
정원은 단위 정사각형 개로 이루어진 격자로 나타낼 수 있다. 일부 칸(0개일 수도 있다)은 바위로 막혀 있고, 나머지 칸을 자유 칸이라고 한다. 두 칸이 변을 공유하면 두 칸을 이웃이라고 한다. 즉 각 칸에는 가로 방향으로 두 개, 세로 방향으로 두 개, 최대 4개의 이웃이 있다. 할아버지는 정원을 미로로 만들려고 한다. 이를 위해 자유 칸 일부에 덤불을 심어 막을 수 있다. 덤불을 심은 칸은 더 이상 자유 칸이 아니다.
미로는 다음 성질을 만족해야 한다. 미로의 자유 칸 와 의 모든 쌍에 대해 두 칸 사이에 단순 경로가 정확히 하나 있어야 한다. 칸 와 사이의 단순 경로란 첫 칸이 , 마지막 칸이 이고 모든 칸이 서로 다르며 연속한 두 칸이 모두 이웃인 자유 칸의 수열이다.
아이는 그 칸이 자유 칸이고 자유 이웃이 정확히 하나일 때만 그 칸에 숨을 수 있다. 두 아이가 같은 칸에 숨을 수는 없다.
정원의 지도가 입력으로 주어진다. 할아버지가 아이를 많이 숨길 수 있는 미로를 만들도록 도와야 한다.
이 문제는 부분 점수가 있는 출력 전용 문제다. 할아버지의 정원을 나타내는 입력 파일 개가 주어진다. 각 입력 파일마다 미로의 지도를 담은 출력 파일을 제출해야 한다. 각 출력 파일은 그 미로에 숨을 수 있는 아이의 수에 따라 점수를 받는다.
이 문제에서는 소스 코드를 제출하지 않는다.
입력
각 입력 파일은 정원을 나타내는 격자 하나와 할아버지가 초대한 아이의 수 를 담고 있다. 형식은 다음과 같다.
-
번째 줄:
-
번째 줄(): 격자의 번째 행. 길이가 인 문자열이며 다음 문자로 이루어진다(공백 없음).
- '
.': 자유 칸, - '
#': 바위.
- '
출력
-
번째 줄(): 미로(덤불을 심은 뒤의 정원)의 번째 행. 길이가 인 문자열이며 다음 문자로 이루어진다(공백 없음).
- '
.': 자유 칸, - '
#': 바위, - '
X': 덤불. (문자 X는 대문자여야 한다.)
- '