만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

카드 더미 정리 (라지)

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

요약
여러 개의 카드 더미가 주어질 때, 같은 무늬 카드 제거와 빈 더미로의 이동을 반복해 모든 더미를 한 장 이하로 만들 수 있는지 판정한다.
난이도

어려움10점 중 8점

유형
그래프, 위상 정렬, 그리디, 시뮬레이션
정답자
아직 제출이 없습니다

문제

앞면이 보이게 쌓인 카드 더미 NN개로 혼자 하는 카드 게임을 한다. 각 더미에는 처음에 카드가 정확히 CC장씩 있다. 카드마다 숫자와 무늬가 있으며, 숫자와 무늬가 모두 같은 카드는 게임 안에 둘 이상 없다.

한 번의 이동으로 다음 중 하나를 할 수 있다.

  1. 무늬가 같은 카드가 서로 다른 더미의 맨 위에 두 장 이상 있으면, 그중 숫자가 가장 작은 카드를 게임에서 없앨 수 있다. 마지막 카드를 잃은 더미도 그대로 남는다. 빈 더미가 될 뿐이다.
  2. 빈 더미가 있으면, 비어 있지 않은 더미 하나의 맨 위 카드를 가져와 그 빈 더미에 올릴 수 있다. 그 카드는 그 더미의 유일한 카드가 된다.

이동을 적절히 이어서 모든 더미에 카드가 한 장 이하만 남게 하면 이긴다. 처음 배치가 주어질 때, 이길 수 있는지 판정한다.

입력

첫째 줄에 테스트 케이스가 사용하는, 미리 만들어 둔 더미의 개수 PP가 주어진다. 다음 PP개 줄에는 미리 만들어 둔 더미가 한 줄에 하나씩 주어진다. 그중 ii번째 줄은 ii번째 더미의 카드 장수 CiC_i로 시작하고, 이어서 정수 쌍이 CiC_i개 주어진다. jj번째 쌍 VijV_{ij}와 SijS_{ij}는 그 더미의 위에서 jj번째 카드의 숫자와 무늬이다.

다음 줄에는 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 두 줄이다. 첫째 줄에는 더미의 개수 NN과 한 더미의 카드 장수 CC가 주어진다. 둘째 줄에는 판을 이루는 더미의 번호 PiP_i가 NN개 주어지고, 번호는 0부터 센다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 이길 수 있으면 POSSIBLE, 이길 수 없으면 IMPOSSIBLE이다.

제한

  • 1≤T≤1001 \le T \le 100
  • 2≤P≤600002 \le P \le 60000
  • 0≤Pi<P0 \le P_i < P
  • 2≤N≤500002 \le N \le 50000
  • 2≤C≤500002 \le C \le 50000
  • 2≤Ci≤500002 \le C_i \le 50000
  • 4≤N×C≤1054 \le N \times C \le 10^5
  • 1≤Vij≤500001 \le V_{ij} \le 50000
  • 1≤Sij≤500001 \le S_{ij} \le 50000
  • PiP_i번째 더미의 카드 장수는 정확히 CC이다.
  • 한 테스트 케이스 안에서 숫자와 무늬가 모두 같은 카드는 둘 이상 없다.

힌트

예제의 첫 테스트 케이스에는 카드가 두 장씩인 더미가 둘 있다. 첫 더미는 위에 무늬 2의 7, 그 아래에 무늬 1의 7이 있다. 둘째 더미는 위에 무늬 2의 3, 그 아래에 무늬 2의 6이 있다. 이기는 방법 하나는 이렇다. 무늬 2의 3을 없애고, 무늬 2의 6을 없애면 둘째 더미가 빈다. 그 빈 더미로 무늬 2의 7을 옮기면 모든 더미에 카드가 한 장 이하만 남는다.

예제의 둘째 테스트 케이스에는 카드가 두 장씩인 더미가 셋 있다. 할 수 있는 이동은 무늬 4의 5를 없애는 것뿐이고, 그 뒤에 새로 열리는 이동은 없다.

예제4

  1. 예제 1

    입력
    5
    2 7 2 7 1
    2 6 4 7 4
    2 3 2 6 2
    2 4 2 10 2
    2 5 4 7 3
    2
    2 2
    0 2
    3 2
    4 1 3
    
    예상 출력
    Case #1: POSSIBLE
    Case #2: IMPOSSIBLE
    
  2. 예제 2

    입력
    4
    2 1 1 3 1
    2 2 1 4 1
    2 1 2 2 2
    2 1 3 2 3
    2
    2 2
    0 1
    2 2
    2 3
    
    예상 출력
    Case #1: POSSIBLE
    Case #2: IMPOSSIBLE
    
  3. 예제 3

    입력
    5
    2 1 1 2 2
    2 3 3 4 4
    2 1 1 2 1
    2 3 2 4 2
    2 5 2 6 1
    2
    2 2
    0 1
    3 2
    2 3 4
    
    예상 출력
    Case #1: IMPOSSIBLE
    Case #2: POSSIBLE
    
  4. 예제 4

    입력
    4
    3 1 1 2 1 3 1
    3 4 1 5 2 6 2
    3 1 1 2 1 3 1
    3 4 1 5 1 6 2
    2
    2 3
    0 1
    2 3
    2 3
    
    예상 출력
    Case #1: IMPOSSIBLE
    Case #2: POSSIBLE