trang chủ / đề bài / ktreespan

Cây khung của k-cây

Đề bài

Mô tả

Một đồ thị vô hướng được xây dựng theo quy tắc sau:

  • Ban đầu đồ thị là một clique (đồ thị đầy đủ) gồm k đỉnh, đánh số 1,2,…,k.
  • Sau đó lần lượt thêm các đỉnh k+1,k+2,…,n. Khi thêm đỉnh i, ta chọn k đỉnh đã có sao cho chúng đôi một kề nhau (tức là tạo thành một clique kích thước k), rồi nối i với cả k đỉnh đó.

Hãy đếm số cây khung của đồ thị thu được, lấy phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và k.
  • n−k dòng tiếp theo mô tả các đỉnh k+1,k+2,…,n theo thứ tự. Dòng thứ i chứa k số nguyên phân biệt (không nhất thiết theo thứ tự tăng dần), là chỉ số của k đỉnh mà đỉnh k+i được nối tới; mọi chỉ số đều nhỏ hơn k+i. Dữ liệu đảm bảo k đỉnh này đôi một kề nhau tại thời điểm đỉnh k+i được thêm vào.

Khi n=k thì không có dòng nào tiếp theo.

Dữ liệu ra

Một số nguyên duy nhất: số cây khung của đồ thị, lấy phần dư khi chia cho 109+7.

Ràng buộc

  • 1≤n≤10000
  • 1≤k≤min(n,5)

Ví dụ

Input Output Giải thích
3 2
1 2
3 Clique ban đầu là cạnh 1−2, đỉnh 3 nối với cả 1 và 2, nên đồ thị là tam giác. Bỏ đi một cạnh bất kỳ trong ba cạnh ta được một cây khung, vậy có 3 cây khung.
4 3
1 2 3
16 Clique ban đầu là tam giác 1−2−3, đỉnh 4 nối với cả ba đỉnh, nên đồ thị là K4. Số cây khung của K4 là 44−2=16.
3 3 3 Ở đây n=k nên không có đỉnh nào được thêm vào: đồ thị chính là clique K3, có 3 cây khung.

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