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

Vasya và Bộ Ghép Cực Đại

Đề bài

Mô tả

Cho một cây gồm n đỉnh. Bạn muốn xóa đi một tập cạnh nào đó (có thể không xóa cạnh nào) sao cho bộ ghép cực đại của đồ thị thu được là duy nhất.

Một bộ ghép (matching) của đồ thị là một tập con các cạnh sao cho không có đỉnh nào thuộc hai cạnh trở lên trong tập đó. Bộ ghép cực đại là bộ ghép có số cạnh lớn nhất có thể. Bộ ghép cực đại được gọi là duy nhất nếu chỉ có đúng một tập cạnh đạt được số cạnh lớn nhất đó.

Hãy đếm số cách chọn tập cạnh để xóa sao cho đồ thị còn lại có bộ ghép cực đại duy nhất.

Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho 998244353.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n, số đỉnh của cây.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên uv cho biết có một cạnh nối đỉnh u và đỉnh v. Dữ liệu bảo đảm các cạnh này tạo thành một cây.

Dữ liệu ra

  • In ra một số nguyên: số cách xóa một tập con cạnh (có thể rỗng) sao cho bộ ghép cực đại của đồ thị còn lại là duy nhất, lấy phần dư cho 998244353.

Ràng buộc

  • 1n3·105
  • 1u,vn, uv

Ví dụ

Input Output Giải thích
4
1 2
1 3
1 4
4 Các cách xóa hợp lệ: xóa (1,2) và (1,3); xóa (1,2) và (1,4); xóa (1,3) và (1,4); xóa tất cả cạnh.
4
1 2
2 3
3 4
6 Sáu cách: không xóa cạnh nào; xóa (1,2) và (2,3); xóa (1,2) và (3,4); xóa (2,3) và (3,4); chỉ xóa (2,3); xóa tất cả cạnh.
1 1 Cây một đỉnh, không có cạnh, bộ ghép cực đại rỗng luôn duy nhất.

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