trang chủ / đề bài / gr09_paths

Đếm đường đi trên DAG

Đề bài

Mô tả

Cho đồ thị có hướng không có chu trình gồm n đỉnh đánh số từ 1 đến n và m cung; cung thứ i đi từ đỉnh ui tới đỉnh vi. Có thể có nhiều cung giữa cùng một cặp đỉnh, và chúng được coi là các cung khác nhau.

Cho hai đỉnh s và t. Hãy đếm số đường đi từ s tới t. Hai đường đi được coi là khác nhau nếu dãy cung mà chúng đi qua khác nhau. Khi s=t, đường đi không qua cung nào cũng được tính.

Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu tiên chứa bốn số nguyên n, m, s, t.
  • m dòng tiếp theo, dòng thứ i chứa hai số nguyên ui,vi.

Dữ liệu ra

In ra một số nguyên là số đường đi từ s tới t chia lấy dư cho 109+7.

Ràng buộc

  • 1≤n≤105
  • 0≤m≤2·105
  • 1≤s,t≤n
  • 1≤ui,vi≤n, ui≠vi
  • Đồ thị không có chu trình.

Ví dụ

Input Output Giải thích
5 7 1 5
1 2
1 3
2 4
3 4
2 5
4 5
1 3
4 Các đường đi: 1→2→5, 1→2→4→5, và 1→3→4→5 hai lần (có hai cung 1→3 khác nhau).
5 5 3 5
3 1
3 2
2 1
1 5
4 5
2 Các đường đi: 3→1→5 và 3→2→1→5. Đường đi 4→5 không bắt đầu từ s=3.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0