아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Nowruz 8

시간 제한1초메모리 제한512 MB

요약
바위와 빈 칸으로 이루어진 격자가 주어질 때, 남은 빈 칸들이 트리(임의의 두 칸 사이에 단순 경로가 정확히 하나)를 이루도록 빈 칸 일부를 덤불로 막아 차수가 1인 칸의 수를 최대화하는 출력 전용 문제다.
난이도

어려움10점 중 9점

유형
트리, 그래프, 그리디, 구현
정답자
아직 제출이 없습니다

문제

Nowruz(페르시아의 새해)가 며칠 남지 않았고, 할아버지는 가족을 정원에 초대했다. 손님 중에는 아이가 kk명 있다. 아이들이 더 즐겁게 모일 수 있도록 할아버지는 숨바꼭질 놀이를 열려고 한다.

정원은 단위 칸 m×nm \times n 격자로 나타낼 수 있다. 일부 칸(0개일 수도 있다)은 돌로 막혀 있고, 나머지 칸을 자유 칸이라고 한다. 두 칸이 변을 공유하면 이웃이라고 한다. 즉 각 칸에는 가로 방향으로 두 개, 세로 방향으로 두 개, 최대 4개의 이웃이 있다. 할아버지는 정원을 미로로 만들려고 한다. 이를 위해 자유 칸 일부에 덤불을 심어 막을 수 있다. 덤불을 심은 칸은 더 이상 자유 칸이 아니다.

미로는 다음 성질을 만족해야 한다. 미로의 자유 칸 쌍 aa와 bb마다 두 칸 사이에 단순 경로가 정확히 하나 있어야 한다. 칸 aa와 bb 사이의 단순 경로란 첫 칸이 aa, 마지막 칸이 bb이고, 모든 칸이 서로 다르며, 연속한 두 칸이 이웃인 자유 칸의 나열이다.

아이는 그 칸이 자유 칸이고 자유 이웃이 정확히 하나일 때만 그 칸에 숨을 수 있다. 두 아이가 같은 칸에 숨을 수는 없다.

정원의 지도가 입력으로 주어진다. 할아버지가 아이들이 많이 숨을 수 있는 미로를 만들도록 도와야 한다.

이 과제는 부분 점수가 있는 출력 전용 과제다. 할아버지의 정원을 나타내는 입력 파일 1010개가 주어진다. 각 입력 파일마다 미로 지도를 담은 출력 파일을 제출해야 한다. 각 출력 파일에 대해 미로에 숨을 수 있는 아이 수에 따라 점수를 받는다.

이 과제에서는 소스 코드를 제출하지 않는다.

입력

각 입력 파일은 정원을 나타내는 하나의 격자와 할아버지가 초대한 아이 수 kk를 준다. 형식은 다음과 같다.

  • 11번째 줄:     m    n    k\;\; m \;\; n \;\; k

  • 1+i1+i번째 줄 (1≤i≤m1 \leq i \leq m): 격자의 ii번째 행으로, 다음 문자로 이루어진 길이 nn의 문자열이다(공백 없음).

    • '.': 자유 칸,
    • '#': 돌.

출력

  • ii번째 줄 (1≤i≤m1 \leq i \leq m): 미로(덤불을 심은 뒤의 정원)의 ii번째 행으로, 다음 문자로 이루어진 길이 nn의 문자열이다(공백 없음).

    • '.': 자유 칸,
    • '#': 돌,
    • 'X': 덤불. (문자 X는 대문자여야 한다.)

예제1

  1. 예제 1

    입력
    4 5 5
    ....#
    .#..#
    ...#.
    ....#
    
    예상 출력
    .X.X#
    .#..#
    ...#X
    XX..#