Cơ sở trượt tuyết

Đề bài

Mô tả

Một khu trượt tuyết đang được quy hoạch trên một khu đất lớn có n ngã rẽ, đánh số từ 1 đến n. Ban đầu các ngã rẽ chưa được nối với nhau.

Trong quá trình thi công, m con đường trượt hai chiều sẽ được xây lần lượt: đầu tiên là đường số 1, rồi đường số 2, và cứ thế tiếp tục. Đường thứ i nối ngã rẽ ai với ngã rẽ bi. Giữa một cặp ngã rẽ có thể có nhiều hơn một con đường.

Một đường đua là một lộ trình thoả mãn đồng thời:

  • Lộ trình khép kín, tức là bắt đầu và kết thúc tại cùng một ngã rẽ.
  • Lộ trình chứa ít nhất một con đường.
  • Lộ trình không đi qua con đường nào quá một lần, nhưng có thể đi qua một ngã rẽ nhiều lần.

Một cơ sở trượt tuyết là một tập khác rỗng các con đường, sao cho tập đó có thể chia thành một hoặc nhiều đường đua, mỗi con đường trong tập thuộc đúng một đường đua và mỗi đường đua chỉ dùng các con đường trong tập. Cơ sở trượt tuyết không nhất thiết phải liên thông.

Hai cơ sở trượt tuyết được xem là khác nhau nếu chúng gồm hai tập con đường khác nhau.

Sau khi xây xong mỗi con đường, hãy đếm số cách chọn một cơ sở trượt tuyết từ những con đường đã được xây.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm là số ngã rẽ và số con đường.
  • m dòng tiếp theo, dòng thứ i chứa hai số nguyên aibi mô tả con đường thứ i, theo đúng thứ tự chúng được xây.

Dữ liệu ra

In ra m dòng: dòng thứ i là số cách chọn cơ sở trượt tuyết sau khi xây xong con đường thứ i, lấy phần dư khi chia cho 109+9.

Ràng buộc

  • 2n105
  • 1m105
  • 1ai,binaibi

Ví dụ

Input Output Giải thích
3 4
1 3
2 3
1 2
1 2
0
0
1
3
Sau hai con đường đầu chưa có lộ trình khép kín nào. Sau đường thứ ba, ba con đường tạo thành tam giác 1231, cho đúng 1 cách chọn. Sau đường thứ tư có 3 cách: tam giác cũ; tam giác dùng con đường 12 thứ hai; và tập gồm hai con đường song song giữa 12, tạo thành lộ trình khép kín 121.
4 5
1 2
2 3
3 4
4 1
1 3
0
0
0
1
3
Bốn con đường đầu tạo thành chu trình 12341, cho 1 cách chọn. Thêm đường 13 ta có thêm hai tập nữa là {12,23,31}{13,34,41}, tổng cộng 3 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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0