Gán loại bảo mật cho cây
Đề bài
Mô tả
Một hệ thống gồm phòng được nối với nhau bởi hành lang sao cho từ phòng bất kỳ có thể đi tới mọi phòng khác, tức là hệ thống tạo thành một cây.
Mỗi phòng cần được gán một loại bảo mật là một số nguyên trong đoạn . Các phòng có loại đúng bằng được gọi là phòng tối mật. Một cách gán loại cho tất cả các phòng được gọi là hợp lệ nếu thoả mãn đồng thời:
- Có nhiều nhất phòng tối mật.
- Với mọi phòng tối mật, tất cả các phòng kề nó (nối trực tiếp bằng một hành lang) phải có loại nhỏ hơn hẳn . Nói riêng, hai phòng tối mật không được kề nhau.
Hãy đếm số cách gán loại hợp lệ, kết quả lấy phần dư khi chia cho .
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và : số phòng và số loại bảo mật.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên , mô tả một hành lang nối phòng và phòng . Dữ liệu đảm bảo đồ thị tạo thành một cây.
- Dòng cuối chứa hai số nguyên và : loại của phòng tối mật và số phòng tối mật tối đa.
Dữ liệu ra
Một số nguyên duy nhất: số cách gán loại hợp lệ, lấy phần dư cho .
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 2 1 2 2 3 1 4 1 2 |
1 | Ở đây . Nếu một phòng có loại thì mọi phòng kề nó phải có loại nhỏ hơn , điều này bất khả thi. Vì nên mỗi phòng đều có ít nhất một phòng kề, do đó không phòng nào được mang loại . Chỉ còn đúng một cách: mọi phòng đều mang loại . |
| 3 3 1 2 1 3 2 1 |
13 | Có cách gán tuỳ ý; sau khi loại bỏ các cách vi phạm (nhiều hơn một phòng loại , hoặc một phòng loại có phòng kề với loại ) còn lại cách. |
| 3 1 1 2 1 3 1 1 |
0 | Vì nên mọi phòng đều mang loại , dẫn tới hai phòng tối mật kề nhau. Không có cách gán hợp lệ nào. |
Bình luận