Xương Rồng Đỉnh

Đề bài

Mô tả

Cho một đồ thị vô hướng liên thông gồm n đỉnh và m 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 v1,v2,,vt với t>2, sao cho có cạnh nối vivi+1 với mọi 1i<t, đồng thời có cạnh nối v1vt.

Trong bài này, một đường đi từ đỉnh x đến đỉnh y là một dãy đỉnh v1=x,v2,,vt=y (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 k cặp đỉnh (xi,yi). Với mỗi cặp, hãy đếm số đường đi khác nhau bắt đầu tại xi và kết thúc tại yi. Vì kết quả có thể rất lớn, in ra phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số đỉnh và số cạnh.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên ai,bi: có một cạnh nối hai đỉnh aibi.
  • Dòng tiếp theo chứa số nguyên k: số cặp đỉnh cần truy vấn.
  • k dòng tiếp theo, mỗi dòng chứa hai số nguyên xi,yi (xiyi).

Dữ liệu ra

In ra k dòng, dòng thứ i là số đường đi khác nhau từ xi đến yi theo modulo 109+7.

Ràng buộc

  • 2n105
  • 1m105
  • 1ai,bin
  • 1k105
  • 1xi,yin, xiyi
  • Đồ 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: 1-2-3-46-7-8. Với cặp (9,2): đường đi phải đi qua chu trình 6-7-8 (2 cách vòng) và chu trình 1-2-3-4 (2 cách vòng), cho 2×2=4. Với cặp (9,10) không đi qua chu trình nào nên chỉ có 1 đườ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à 1-2-3, đỉnh 4 nối vào đỉnh 3. Với cặp (1,2): đi thẳng 1-2 hoặc vòng 1-3-2, cho 2 cách. Với cặp (1,4): từ 1 tới 32 cách (qua chu trình), rồi 3-4, cho 2 cách.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0