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

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

비보파크 동물 배치

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

요약
최대 100개 축사에 네 종을 배치하되 서로 보이는 축사는 종이 달라야 하며 사전 순으로 가장 작은 배치를 출력합니다.
난이도

보통10점 중 7점

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

문제

비보파크는 발렌시아에 있는 동물원이다. 최근에 넓고 평평한 사바나 초원을 여러 우리로 나눈 구역이 새로 생겼다.

새로 만든 우리마다 사자, 표범, 호랑이, 흑표범 네 종 가운데 한 종을 한 마리씩 배치해야 한다. 이 동물은 영역 의식이 강해서, 어느 동물도 자기 우리에서 같은 종의 다른 동물을 볼 수 없어야 한다. 동물원 관리자가 우리 사이의 가시성 자료를 보내 주었으니, 이 자료를 지키면서 모든 우리에 종을 하나씩 정하면 된다. 배치가 끝났을 때 종이 정해지지 않은 우리가 남아 있어서는 안 된다.

입력

첫째 줄에 우리의 개수 NN이 주어진다. (1≤N≤1001 \le N \le 100)

둘째 줄부터 파일이 끝날 때까지 가시성 제한이 한 줄에 하나씩 주어진다. 1-3은 1번 우리의 동물이 3번 우리의 동물을 볼 수 있고, 3번 우리의 동물도 1번 우리의 동물을 볼 수 있다는 뜻이다. 관리자가 자료를 꼼꼼히 정리하는 사람이 아니라서 같은 제한이 여러 번 나오거나 두 번호의 순서가 바뀐 채로 다시 나오기도 한다.

모든 제한을 만족하는 배치가 적어도 하나 존재한다.

출력

우리 하나마다 한 줄씩, 우리 번호와 그 우리에 배치한 종의 번호를 공백으로 구분해 출력한다. 종 번호는 1이 사자, 2가 표범, 3이 호랑이, 4가 흑표범이다. 우리 번호는 1번부터 NN번까지 증가하는 순서로 쓴다.

조건을 만족하는 배치는 여러 가지일 수 있다. 답이 하나로 정해지도록, 1번 우리부터 NN번 우리까지의 종 번호를 차례로 늘어놓은 수열 (c1,c2,…,cN)(c_1, c_2, \dots, c_N)이 사전순으로 가장 작은 배치를 출력한다. 즉 c1c_1을 될 수 있는 대로 작게 정하고, 그 값을 고정한 다음 c2c_2를 될 수 있는 대로 작게 정하는 식으로 마지막 우리까지 정한다.

예제2

  1. 예제 1

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

    입력
    4
    1-2
    1-3
    1-4
    2-3
    2-4
    3-4
    
    예상 출력
    1 1
    2 2
    3 3
    4 4