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

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

숲 게임

시간 제한2초메모리 제한1024 MB

요약
각 나무의 뿌리에 놓인 돌을 한 번에 1개에서 K개 사이의 사용하지 않은 간선을 따라 옮기는 게임에서, B가 이기는 나무들의 비어 있지 않은 집합의 개수를 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
트리, 게임 이론, 동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

깊은 산 속 숭고한 협곡에는 NN개의 나무로 이루어진 숲이 있다. 이곳의 ii번째 나무는 MiM_i개의 마디와 Mi−1M_i-1개의 나뭇가지가 사이클 없이 연결되어 있다. A와 B는 이 숲에서 '숲 게임'을 한다. 게임은 각 나무의 뿌리(1번 마디)에 돌이 하나씩 놓인 상태에서 시작한다. 각 플레이어는 자신의 턴에 나무를 하나 고르고, 그 나무의 돌을 아직 지나간 적 없는 인접한 나뭇가지를 따라 1번 이상 최대 KK번 이동시킨다. 먼저 A가 턴을 가지며, 이후 번갈아 턴을 가진다. 자신의 턴에 어떤 나무에서도 이동할 수 있는 돌이 없는 플레이어가 패배한다.

B가 나중에 시작하는 불리함을 보상하기 위해, 게임 시작 전에 B가 게임에 사용할 나무를 몇 개 고른다. 다만 게임은 진행되어야 하므로 B는 나무를 적어도 하나 선택한다. 둘 다 최적으로 플레이할 때 B가 이길 수 있는 공집합이 아닌 나무 집합은 몇 개인가?

답이 매우 커질 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

입력

첫째 줄에 나무의 개수 NN과 매 턴마다 움직일 수 있는 최대 횟수 KK가 주어진다. (1≤N,K≤100 0001 \leq N, K \leq 100\,000)

그 후 NN개의 나무 정보가 나무 번호의 오름차순으로 주어진다.

ii번 나무 정보의 첫째 줄에는 나무의 마디 개수 MiM_i가 주어진다. (1≤Mi1 \leq M_i, ∑Mi≤100 000\sum M_i \leq 100\,000)

다음 Mi−1M_i-1개의 줄 중 jj번째 줄에는 jj번 나뭇가지가 연결하는 두 마디의 번호 ui,ju_{i,j}, vi,jv_{i,j}가 주어진다. (1≤ui,j,vi,j≤Mi1 \leq u_{i,j}, v_{i,j} \leq M_i, ui,j≠vi,ju_{i,j} \neq v_{i,j})

같은 두 마디를 잇는 나뭇가지는 여러 개 주어지지 않는다.

출력

B가 이길 수 있는 공집합이 아닌 나무 집합의 개수를 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

    입력
    1 1
    4
    1 2
    2 3
    1 4
    
    예상 출력
    0
    
  2. 예제 2

    입력
    3 2
    2
    1 2
    3
    1 2
    2 3
    4
    2 1
    2 3
    1 4
    
    예상 출력
    1
    
  3. 예제 3

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