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

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

퍼즐 맞추기

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

요약
각 조각의 이웃 목록과 첫 행의 처음 두 조각이 주어질 때 N행 M열 퍼즐 배치를 복원하고 유일하지 않으면 NIE를 출력합니다.
난이도

보통10점 중 7점

유형
백트래킹, 그래프
정답자
아직 제출이 없습니다

문제

매일 하던 낙엽 청소를 끝낸 빈첸티(Wincenty) 씨는 가장 좋아하는 취미인 직소 퍼즐 맞추기로 쉬기로 했다. 그는 책상 서랍에서 오래된 퍼즐 한 세트를 찾아 맞추기 시작했다.

잠시 뒤 그는 어떤 조각이 어떤 조각과 맞물리는지 모두 알아냈고, 퍼즐 첫 번째 줄의 처음 두 조각이 무엇인지도 알게 되었다. 물론 완성될 그림의 크기(행과 열의 개수)도 알고 있다. 이 정보만으로 퍼즐 전체를 유일하게 복원할 수 있을까?

입력

첫째 줄에 두 자연수 NN과 MM이 주어진다 (3≤N≤M3 \le N \le M, N⋅M≤1000N \cdot M \le 1000). NN은 퍼즐의 행 개수, MM은 열 개수이다.

이어지는 N⋅MN \cdot M개의 줄에는 11번 조각부터 N⋅MN \cdot M번 조각까지 각 조각의 정보가 순서대로 주어진다. 각 줄에는 정확히 네 개의 음이 아닌 정수가 있으며, 이는 그 조각과 맞물리는 조각들의 번호이다. 조각을 회전할 수 있으므로 이 네 값에는 정해진 방향 순서가 없다. 조각이 그림의 가장자리에 놓여 이웃이 없는 변이 있으면, 그 이웃 대신 00이 주어진다.

마지막 줄에는 두 자연수 AA와 BB가 주어진다. 이는 각각 퍼즐 첫 번째 줄의 첫 번째, 두 번째 조각의 번호이다.

출력

주어진 정보만으로 퍼즐의 답을 유일하게 결정할 수 없으면 NIE를 출력한다. 그렇지 않으면 완성된 퍼즐을 NN개의 줄에 걸쳐 출력한다. 각 줄에는 해당 행에 놓이는 조각의 번호 MM개를 순서대로, 공백으로 구분하여 쓴다.

예제3

  1. 예제 1

    입력
    3 4
    10 2 4 11
    5 12 1 7
    0 12 0 5
    5 0 6 1
    2 0 3 4
    10 4 0 0
    11 2 0 8
    0 12 7 0
    11 10 0 0
    6 9 0 1
    7 9 1 0
    2 0 3 8
    9 11
    
    예상 출력
    9 11 7 8
    10 1 2 12
    6 4 5 3
    
  2. 예제 2

    입력
    3 3
    0 3 4 5
    5 7 9 0
    1 0 0 8
    0 6 0 1
    8 2 1 6
    5 4 9 0
    2 0 0 8
    0 7 5 3
    0 6 2 0
    7 8
    
    예상 출력
    7 8 3
    2 5 1
    9 6 4
    
  3. 예제 3

    입력
    3 5
    9 15 2 8
    0 3 12 1
    0 9 0 2
    13 6 10 0
    0 12 6 10
    0 5 4 0
    0 11 13 10
    11 14 0 1
    14 0 1 3
    15 4 5 7
    7 8 15 0
    2 15 0 5
    0 0 4 7
    9 8 0 0
    1 12 10 11
    3 2
    
    예상 출력
    3 2 12 5 6
    9 1 15 10 4
    14 8 11 7 13