Phá Mã (Gold)
Cho một cây có gốc gồm đỉnh, đánh số từ đến , với đỉnh là gốc. Mỗi đỉnh () có cha là với .
Một "mã khóa" là phép gán mỗi đỉnh một chữ số từ 0 đến 9. Có ràng buộc cấm, mỗi ràng buộc gồm một đỉnh và một chuỗi 5 chữ số . Ràng buộc này cấm các mã khóa mà khi đọc chữ số trên đường đi từ lên gốc (5 bước), ta thu được chuỗi .
Cụ thể, nếu đường đi từ lên gốc đi qua các đỉnh , thì chuỗi chữ số tại 5 đỉnh này không được bằng .
Đảm bảo rằng mỗi đỉnh có ít nhất 4 tổ tiên (đường đi lên gốc có ít nhất 5 đỉnh).
Hãy đếm số mã khóa bị loại bỏ (vi phạm ít nhất một ràng buộc), modulo .
Dữ liệu vào
Dòng đầu chứa hai số nguyên và .
dòng tiếp theo, dòng thứ chứa — cha của đỉnh (với từ đến ).
dòng tiếp theo, mỗi dòng chứa số nguyên và chuỗi 5 chữ số — một ràng buộc cấm.
Dữ liệu ra
Một số nguyên duy nhất — số mã khóa bị loại bỏ, modulo .
Ràng buộc
- Chuỗi có đúng 5 ký tự, mỗi ký tự là chữ số 0-9
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 2 0 1 2 3 3 4 01234 5 91234 |
19 | Cây có 6 đỉnh. Ràng buộc 1: đường từ đỉnh 4 lên (4→3→2→1→0) không được gán 01234. Ràng buộc 2: đường từ đỉnh 5 lên (5→3→2→1→0) không được gán 91234. Hai ràng buộc chia sẻ phần 1234 ở 4 đỉnh trên, nên có 19 mã khóa bị cấm. |
Bình luận