만드는 중입니다

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

알록달록 트리

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

요약
k가지 색으로 루트가 있는 트리의 정점을 칠하는 방법 수를 구합니다. 각 정점은 자식들이 쓰는 색 중 하나를 골라야 하며, 자식들이 쓰는 색의 개수는 l_i에서 r_i 사이입니다.
난이도

어려움10점 중 8점

유형
트리, 동적 계획법, 조합론, 분할 정복
정답자
아직 제출이 없습니다

문제

작년 크리스마스에 예쁜 트리를 보고 감명받은 윤헌이는 우정정보관 앞에 nn개의 예쁜 구슬로 장식한 "알록달록 트리"를 세우기로 했다.

윤헌이는 nn개의 구슬에 번호를 붙여 트리 그래프의 정점으로 보고, 각 정점을 kk개의 색 중 하나로 칠하려고 한다. 루트는 1번 정점이다. 다만 아무렇게나 칠한 트리는 윤헌이의 마음에 들지 않는다. 마음에 드는 알록달록 트리가 되려면 임의의 정점이 자식들의 색 중 하나를 골라 그 색으로 칠해야 한다. 정점이 리프이면 kk개의 색 중 어떤 색이든 칠할 수 있다.

ii번 정점의 자식에 칠할 수 있는 색의 가짓수가 lil_i 이상 rir_i 이하의 범위로 주어질 때, 윤헌이가 세울 수 있는 알록달록 트리의 가짓수를 998 244 353998\,244\,353로 나눈 나머지를 구하시오.

입력

첫 줄에 nn과 kk가 공백으로 구분되어 주어진다.

다음 n−1n-1개의 줄에 트리 간선의 양 끝점인 정점 번호 uu와 vv가 공백으로 구분되어 주어진다.

그다음 ii번째 줄에는 두 정수 lil_i와 rir_i가 공백으로 구분되어 주어진다. 이는 ii번 정점의 자식들을 lil_i개 이상 rir_i개 이하의 색 가짓수로 칠해야 함을 의미한다.

출력

트리를 칠하는 경우의 수를 998 244 353998\,244\,353로 나눈 나머지를 출력한다.

제한

  • 1≤n≤1051 \le n \le 10^5
  • 1≤k≤1051 \le k \le 10^5
  • 0≤li≤ri≤min⁡(k,di)0 \le l_i \le r_i \le \min(k, d_i) (단, did_i는 ii번 정점의 자식의 수)

예제2

  1. 예제 1

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

    입력
    5 4
    1 2
    1 3
    2 4
    2 5
    1 2
    1 2
    0 0
    0 0
    0 0
    
    예상 출력
    196