Xương Rồng Đỉnh
Đề bài
Mô tả
Cho một đồ thị vô hướng liên thông gồm đỉnh và cạnh, không có khuyên và không có cạnh bội. Đồ thị này là một xương rồng đỉnh (vertex cactus): mỗi đỉnh thuộc về nhiều nhất một chu trình đơn.
Một chu trình đơn là dãy các đỉnh phân biệt với , sao cho có cạnh nối và với mọi , đồng thời có cạnh nối và .
Trong bài này, một đường đi từ đỉnh đến đỉnh là một dãy đỉnh (các đỉnh không nhất thiết phân biệt) sao cho giữa hai đỉnh liên tiếp luôn có cạnh, và mỗi cạnh xuất hiện không quá một lần trên đường đi. Nói cách khác, đỉnh có thể lặp lại nhưng cạnh thì không.
Hai đường đi được coi là khác nhau nếu tập cạnh mà chúng sử dụng khác nhau.
Cho cặp đỉnh . Với mỗi cặp, hãy đếm số đường đi khác nhau bắt đầu tại và kết thúc tại . Vì kết quả có thể rất lớn, in ra phần dư khi chia cho .
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và : số đỉnh và số cạnh.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên : có một cạnh nối hai đỉnh và .
- Dòng tiếp theo chứa số nguyên : số cặp đỉnh cần truy vấn.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên ().
Dữ liệu ra
In ra dòng, dòng thứ là số đường đi khác nhau từ đến theo modulo .
Ràng buộc
- ,
- Đồ thị được đảm bảo là xương rồng đỉnh, liên thông, không khuyên, không cạnh bội.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 10 11 1 2 2 3 3 4 1 4 3 5 5 6 8 6 8 7 7 6 7 9 9 10 6 1 2 3 5 6 9 9 2 9 3 9 10 |
2 2 2 4 4 1 |
Có hai chu trình: và . Với cặp : đường đi phải đi qua chu trình (2 cách vòng) và chu trình (2 cách vòng), cho . Với cặp không đi qua chu trình nào nên chỉ có đường đi. |
| 4 4 1 2 2 3 3 1 3 4 2 1 2 1 4 |
2 2 |
Chu trình duy nhất là , đỉnh nối vào đỉnh . Với cặp : đi thẳng hoặc vòng , cho cách. Với cặp : từ tới có cách (qua chu trình), rồi , cho cách. |
Bình luận