BOJ 14365 Slides! (Small)

BOJ 14365 Slides! (Small)

문제 링크:

문제 내용

BB개의 빌딩에 미끄럼틀을 설치해서, 1번 빌딩에서 BB번 빌딩으로 갈 수 있도록 하려고 합니다.

미끄럼틀은 임의의 두 빌딩 사이에 설치할 수 있지만, 임의의 1u,vB1 \le u, v \le B에 대해, uu번 빌딩에서 vv번 빌딩으로 가는 미끄럼틀은 최대 하나만 설치할 수 있습니다. 또한, 미끄럼틀을 이용하여 한 빌딩에서 다른 빌딩을 통해서 이전 빌딩으로 돌아올 수 있으면 안됩니다.

1번 빌딩에서 BB번 빌딩으로 가는 서로 다른 방법이 정확히 MM개가 되도록 미끄럼틀을 설치하는 방법이 있다면, 그러한 방법을 아무거나 하나 출력하세요.

입력

첫 번째 줄에는 테스트 케이스의 개수 TT가 주어집니다. (1T1001 \le T \le 100)

각 테스트 케이스에 대해, BBMM이 한 줄에 주어집니다. (2B62 \le B \le 6, 1M201 \le M \le 20)

출력

각 테스트 케이스에 대해, 다음과 같이 출력합니다.

  • 미끄럼틀을 설치하는 방법이 있다면, 먼저 한 줄에 Case #{테스트 케이스 번호}: POSSIBLE을 출력하고, 추가로 B×BB \times B 행렬을 출력합니다. 이 행렬의 ii번째 행의 jj번째 수는 ii번 빌딩에서 jj번 빌딩으로 가는 미끄럼틀이 있으면 1, 아니면 0입니다. 이를 출력할 때는 BB줄에 걸쳐서 ii번째 줄에 그 행의 BB개 값을 공백 없이 출력합니다.
  • 미끄럼틀을 설치하는 방법이 없다면, 한 줄에 Case #{테스트 케이스 번호}: IMPOSSIBLE을 출력합니다.

문제 풀이

스포일러

사이클이 존재하면 안된다는 조건에 의해, 만들어야 하는 그래프는 DAG임을 알 수 있습니다. 따라서, 작은 번호에서 큰 번호로 연결되는 것만 고려하면 됩니다.

B6B \le 6이므로, 넣을지 말지 고려해야 하는 미끄럼틀의 개수는 최대 15개입니다. 따라서 2152^{15}개 각각의 그래프에 대해 1번에서 BB번으로 가는 경우의 수를 계산해 보고 조건에 맞는 것을 출력하면 됩니다.

Last updated on