trang chủ / đề bài / voi22_graph

Đặc trưng đồ thị

Đề bài

Mô tả

Khi nghiên cứu về lý thuyết đồ thị, Nam đã tìm ra một đặc trưng cho đồ thị vô hướng. Cụ thể, với đồ thị vô hướng G gồm n đỉnh, xét lần lượt từng đỉnh từ 1 đến n, với đỉnh i, Nam tính được số ai bằng số lượng đỉnh j, thỏa mãn 1≤j<i, mà j có cạnh nối với i. Dãy số nguyên a1,a2,…,an được gọi là dãy đặc trưng của đồ thị. Dễ nhận thấy rằng một đồ thị chỉ có duy nhất một dãy đặc trưng, tuy nhiên, có thể có nhiều đồ thị khác nhau nhưng có cùng một dãy đặc trưng.

Bẵng đi một thời gian, một hôm, Nam tìm lại được một file văn bản ghi một dãy số là một dãy đặc trưng của một đồ thị vô hướng. Tuy nhiên, dãy bị khuyết mất một số số và biết rằng bậc mỗi đỉnh của đồ thị này đều nhỏ hơn hoặc bằng b. Nam muốn tính số lượng cách điền các số vào các vị trí bị khuyết để nhận được dãy f là dãy đặc trưng biết rằng:

  • Tồn tại ít nhất một đồ thị có dãy đặc trưng là f;
  • Tất cả các đồ thị có dãy đặc trưng là f đều có bậc của mỗi đỉnh trong đồ thị nhỏ hơn hoặc bằng b.

Yêu cầu: Cho số nguyên b và dãy đặc trưng bị khuyết, gọi S là số lượng cách điền các số vào các vị trí bị khuyết để nhận được dãy f là dãy đặc trưng thỏa mãn, hãy tính Smod(109+7), trong đó mod là phép toán chia lấy dư. Hai cách điền gọi là khác nhau nếu như tồn tại một vị trí khuyết mà giá trị điền vào trong cách này khác với giá trị điền vào trong cách kia.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên dương n,b (b≤n);
  • Dòng thứ hai chứa n số nguyên, số thứ i có giá trị ai (1≤i≤n; 0≤ai≤i−1 hoặc ai=−1) mô tả dãy đặc trưng. Giá trị ai=−1 có nghĩa là vị trí thứ i bị khuyết.

Các số trên cùng một dòng cách nhau bởi dấu cách.

Dữ liệu ra

In ra một số nguyên duy nhất là giá trị Smod(109+7).

Ràng buộc

  • 1≤b≤n≤2000.
  • 0≤ai≤i−1 hoặc ai=−1.

Subtasks

  • Subtask 1 (25% số điểm): n≤6.
  • Subtask 2 (30% số điểm): n≤200 và chỉ có duy nhất một ô bị khuyết.
  • Subtask 3 (25% số điểm): n≤200.
  • Subtask 4 (20% số điểm): n≤2000.

Ví dụ

Input Output Giải thích
4 1
-1 -1 1 -1
1 Có duy nhất một dãy đặc trưng thỏa mãn là (0,0,1,0) và có tất cả 2 đồ thị cùng có dãy đặc trưng này: đồ thị thứ nhất chỉ có một cạnh nối đỉnh 1 với đỉnh 3, đồ thị thứ hai chỉ có một cạnh nối đỉnh 2 với đỉnh 3.
3 1
-1 -1 -1
3 Ví dụ thêm (không có trong đề gốc). Các dãy thỏa mãn là (0,0,0), (0,1,0) và (0,0,1). Dãy (0,1,1) không thỏa mãn vì đồ thị có hai cạnh 1−2 và 1−3 có dãy đặc trưng này và đỉnh 1 có bậc 2>b.

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