Đếm Cây Khung Nhỏ Nhất

Đề bài

Mô tả

Một tầng hầm gồm N×K căn phòng xếp thành lưới N hàng, K cột. Hai phòng kề nhau (cùng hàng và kề cột, hoặc cùng cột và kề hàng) được ngăn bởi đúng một cánh cửa, mỗi cửa có chi phí mở riêng.

Bạn muốn mở một tập cửa sao cho từ phòng bất kỳ đều đi được tới mọi phòng còn lại, với tổng chi phí nhỏ nhất có thể. Nói cách khác, tập cửa được mở là một cây khung nhỏ nhất của lưới.

Hãy đếm số tập cửa khác nhau thoả mãn điều kiện trên (hai tập khác nhau nếu có ít nhất một cánh cửa thuộc tập này mà không thuộc tập kia), lấy phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu: hai số nguyên N, K.
  • N dòng tiếp theo, dòng thứ i gồm K−1 số nguyên: chi phí các cửa ngang của hàng i, từ trái sang phải (số thứ j là cửa giữa phòng (i,j) và (i,j+1)).
  • K dòng tiếp theo, dòng thứ j gồm N−1 số nguyên: chi phí các cửa dọc của cột j, từ trên xuống dưới (số thứ i là cửa giữa phòng (i,j) và (i+1,j)).

Dữ liệu ra

Một số nguyên duy nhất: số cây khung nhỏ nhất, lấy modulo 109+7.

Ràng buộc

  • 2≤N≤30000
  • 2≤K≤6
  • Chi phí mỗi cửa là số nguyên w với 1≤w≤109

Ví dụ

Input Output Giải thích
4 3
1 1
5 6
7 8
1 1
1 1 1
2 3 4
1 1 1
10 Lưới có 10 cửa chi phí 1 nhưng chỉ dùng được 9 trong số đó (dùng cả 10 sẽ tạo chu trình), phần còn lại phải lấy thêm hai cửa chi phí 2 và 3. Có đúng 10 cách chọn xem cửa chi phí 1 nào bị bỏ lại.
2 2
5
5
5
5
4 Bốn phòng tạo thành một hình vuông với 4 cửa chi phí bằng nhau. Cây khung dùng 3 cửa bất kỳ trong 4 cửa, nên có 4 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.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