trang chủ / bài tập / typetree

Gán loại bảo mật cho cây

Đề bài

Mô tả

Một hệ thống gồm n phòng được nối với nhau bởi n1 hành lang sao cho từ phòng bất kỳ có thể đi tới mọi phòng khác, tức là hệ thống tạo thành một cây.

Mỗi phòng cần được gán một loại bảo mật là một số nguyên trong đoạn [1,m]. Các phòng có loại đúng bằng k được gọi là phòng tối mật. Một cách gán loại cho tất cả các phòng được gọi là hợp lệ nếu thoả mãn đồng thời:

  • nhiều nhất x phòng tối mật.
  • Với mọi phòng tối mật, tất cả các phòng kề nó (nối trực tiếp bằng một hành lang) phải có loại nhỏ hơn hẳn k. Nói riêng, hai phòng tối mật không được kề nhau.

Hãy đếm số cách gán loại hợp lệ, kết quả lấy phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số phòng và số loại bảo mật.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên ui, vi mô tả một hành lang nối phòng ui và phòng vi. Dữ liệu đảm bảo đồ thị tạo thành một cây.
  • Dòng cuối chứa hai số nguyên kx: loại của phòng tối mật và số phòng tối mật tối đa.

Dữ liệu ra

Một số nguyên duy nhất: số cách gán loại hợp lệ, lấy phần dư cho 109+7.

Ràng buộc

  • 1n105
  • 1m109
  • 1km
  • 1x10
  • 1ui,vin

Ví dụ

Input Output Giải thích
4 2
1 2
2 3
1 4
1 2
1 Ở đây k=1. Nếu một phòng có loại 1 thì mọi phòng kề nó phải có loại nhỏ hơn 1, điều này bất khả thi. Vì n2 nên mỗi phòng đều có ít nhất một phòng kề, do đó không phòng nào được mang loại 1. Chỉ còn đúng một cách: mọi phòng đều mang loại 2.
3 3
1 2
1 3
2 1
13 27 cách gán tuỳ ý; sau khi loại bỏ các cách vi phạm (nhiều hơn một phòng loại 2, hoặc một phòng loại 2 có phòng kề với loại 2) còn lại 13 cách.
3 1
1 2
1 3
1 1
0 m=1 nên mọi phòng đều mang loại 1=k, dẫn tới hai phòng tối mật kề nhau. Không có cách gán hợp lệ nào.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0