1780: CF771 - C. Bear and Tree Jumps
Description
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$.
Input
The first line of the input contains two integers $n,k\ (2≤n≤200,000,\ 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,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.
Output
Sample 1 Input
6 2
1 2
1 3
2 4
2 5
4 6
Sample 1 Output
20
the given tree has $6$ vertices and it's displayed on the drawing below. Limak can jump to any vertex within distance at most $2$.
For example, from the vertex $5$ he can jump to any of vertices: 1,2 and 4 (well, he can also jump to the vertex 5 itself).
There are $\frac{n(n-1)}{2}=15$ pairs of vertices $(s,t)$ such that $s<t$.
For $5$ of those pairs Limak would need two jumps: (1,6),(3,4),(3,5),(3,6),(5,6). For other $10$ pairs one jump is enough. So, the answer is 5·2+10·1=20.
Sample 2 Input
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
Sample 2 Output
114
Sample 3 Input
3 5
2 1
3 1
Sample 3 Output
3