题库练习 Bear and Tree Jumps
← 上一题 下一题 →

A10812 | Bear and Tree Jumps

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

A tree is an undirected connected graph without cycles. The distance between two vertices is the number of edges in a simple path between them.

Limak is a little polar bear. He lives in a tree that consists of $n$ vertices, numbered $1$ through $n$ .

Limak recently learned how to jump. He can jump from a vertex to any vertex within distance at most $k$ .

For a pair of vertices $(s,t)$ we define $f(s,t)$ as the minimum number of jumps Limak needs to get from $s$ to $t$ . Your task is to find the sum of $f(s,t)$ over all pairs of vertices $(s,t)$ such that $s<t$ .

输入格式

The first line of the input contains two integers $n$ and $k$ ( $2<=n<=200000$ , $1<=k<=5$ ) — the number of vertices in the tree and the maximum allowed jump distance respectively.

The next $n-1$ lines describe edges in the tree. The $i$ -th of those lines contains two integers $a_{i}$ and $b_{i}$ ( $1<=a_{i},b_{i}<=n$ ) — the indices on vertices connected with $i$ -th edge.

It's guaranteed that the given edges form a tree.

输出格式

Print one integer, denoting the sum of $f(s,t)$ over all pairs of vertices $(s,t)$ such that $s<t$ .

输入输出样例

输入 #1
6 2
1 2
1 3
2 4
2 5
4 6
输出 #1
20
输入 #2
13 3
1 2
3 2
4 2
5 2
3 6
10 6
6 7
6 13
5 8
5 9
9 11
11 12
输出 #2
114
输入 #3
3 5
2 1
3 1
输出 #3
3
C++ 编辑器
输入
输出