문제1335--Tree and Swaps

1335: Tree and Swaps

시간제한 : 1.000 sec  메모리제한 : 128 MB

문제 설명





N개의 정점으로 이루어진 트리가 주어진다. i번 정점에 쓰인 값을 w[i]라고 하자.

1번 정점에 쓰인 값부터 n번 정점에 쓰인 값을 차례로 늘어놓은 수열을 트리 수열이라고 하자.

 

초기에 모든 정점에 대해 w[i] = i를 만족한다.

아래의 연산을 0번 이상 수행하여 얻을 수 있는 서로 다른 트리 수열의 개수를 구하시오.

거리가 k 이상인 두 정점 a, b를 선택해 w[a]와 w[b]를 서로 바꾼다.

여기서 거리는 두 정점 사이의 최단 경로에 포함된 간선의 개수를 의미한다.

답의 크기가 너무 커질 수 있으므로 998244353으로 나눈 나머지를 출력한다.

 

(두 수열 A와 B가 서로 다르다는 것은 A[i] ≠ B[i]인 i가 하나라도 존재함을 의미한다.)




입력 설명

첫 번째 줄에 트리의 크기 정수 N과 연산에 필요한 최소 거리 정수 k가 주어진다.

(1 <= N <= 105, 1 <= k <= 109)

 

두 번째 줄부터 N-1개의 줄에 걸쳐 트리의 각 간선의 두 끝점이 공백으로 구분되어 주어진다. 

올바르지 않은 트리가 주어지는 경우는 없다.

출력 설명

정답을 998244353으로 나눈 나머지를 출력한다.

입력 예시 Copy

5 1
1 2
1 3
1 4
2 5

출력 예시 Copy

120

출처/분류