Vasya và Bộ Ghép Cực Đại
Đề bài
Mô tả
Cho một cây gồm đỉnh. Bạn muốn xóa đi một tập cạnh nào đó (có thể không xóa cạnh nào) sao cho bộ ghép cực đại của đồ thị thu được là duy nhất.
Một bộ ghép (matching) của đồ thị là một tập con các cạnh sao cho không có đỉnh nào thuộc hai cạnh trở lên trong tập đó. Bộ ghép cực đại là bộ ghép có số cạnh lớn nhất có thể. Bộ ghép cực đại được gọi là duy nhất nếu chỉ có đúng một tập cạnh đạt được số cạnh lớn nhất đó.
Hãy đếm số cách chọn tập cạnh để xóa sao cho đồ thị còn lại có bộ ghép cực đại duy nhất.
Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho .
Dữ liệu vào
- Dòng đầu chứa số nguyên , số đỉnh của cây.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và cho biết có một cạnh nối đỉnh và đỉnh . Dữ liệu bảo đảm các cạnh này tạo thành một cây.
Dữ liệu ra
- In ra một số nguyên: số cách xóa một tập con cạnh (có thể rỗng) sao cho bộ ghép cực đại của đồ thị còn lại là duy nhất, lấy phần dư cho .
Ràng buộc
- ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 1 2 1 3 1 4 |
4 | Các cách xóa hợp lệ: xóa (1,2) và (1,3); xóa (1,2) và (1,4); xóa (1,3) và (1,4); xóa tất cả cạnh. |
| 4 1 2 2 3 3 4 |
6 | Sáu cách: không xóa cạnh nào; xóa (1,2) và (2,3); xóa (1,2) và (3,4); xóa (2,3) và (3,4); chỉ xóa (2,3); xóa tất cả cạnh. |
| 1 | 1 | Cây một đỉnh, không có cạnh, bộ ghép cực đại rỗng luôn duy nhất. |
Bình luận