Cắt cây theo đường kính
Đề bài
Mô tả
Cho một cây vô hướng gồm đỉnh và một số nguyên .
Độ dài của một đường đi đơn (đường đi mà mỗi đỉnh xuất hiện không quá một lần) giữa hai đỉnh là số cạnh trên đường đi đó. Đường kính của một cây là độ dài lớn nhất của đường đi đơn giữa mọi cặp đỉnh của cây.
Bạn sẽ xoá đi một tập cạnh khỏi cây. Khi các cạnh bị xoá, cây tách thành nhiều cây nhỏ hơn. Một tập cạnh được gọi là hợp lệ nếu tất cả các cây con thu được đều có đường kính không vượt quá .
Hai tập cạnh được coi là khác nhau nếu tồn tại một cạnh chỉ thuộc đúng một trong hai tập.
Hãy đếm số tập cạnh hợp lệ, lấy phần dư khi chia cho .
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và — số đỉnh của cây và đường kính tối đa cho phép.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và mô tả một cạnh nối hai đỉnh và .
Dữ liệu đảm bảo các cạnh tạo thành một cây.
Dữ liệu ra
In ra một số nguyên duy nhất — số tập cạnh hợp lệ, lấy phần dư khi chia cho .
Ràng buộc
- ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 3 1 2 1 3 1 4 |
8 | Đường kính của cây ban đầu đã không vượt quá . Do đó có thể chọn xoá bất kỳ tập cạnh nào; kết quả luôn hợp lệ. Có tập cạnh, kể cả tập rỗng. |
| 2 0 1 2 |
1 | Bắt buộc phải xoá cạnh duy nhất, nếu không đường kính bằng . Chỉ có một tập hợp lệ. |
| 6 2 1 6 2 4 2 6 3 6 5 6 |
25 | Có tập cạnh mà mọi thành phần đều có đường kính . |
| 6 3 1 2 1 5 2 3 3 4 5 6 |
29 | Có tập cạnh mà mọi thành phần đều có đường kính . |
Bình luận