Treo lại chồi

Đề bài

Mô tả

Cho một cây có gốc gồm n đỉnh, gốc là đỉnh 1. Với mỗi đỉnh v khác gốc, cha của v là đỉnh liền trước v trên đường đi ngắn nhất từ gốc tới v; các đỉnh nhận v làm cha được gọi là con của v. Đỉnh không có con được gọi là .

Một đỉnh v được gọi là chồi nếu đồng thời thoả mãn ba điều kiện:

  • v không phải là gốc,
  • v có ít nhất một con,
  • mọi con của v đều là lá.

Trong một thao tác, bạn được chọn một chồi v và treo lại nó cùng toàn bộ các con của nó sang một đỉnh khác: xoá cạnh nối v với cha của nó, rồi thêm cạnh nối v với một đỉnh u được chọn tuỳ ý, với điều kiện u không phải là v và cũng không phải con của v. Tất cả các con của v vẫn giữ nguyên liên kết với v.

Hãy tìm số lá nhỏ nhất mà cây có thể đạt được sau khi thực hiện một số thao tác bất kỳ (có thể là không thao tác nào).

Dữ liệu vào

  • Dòng đầu chứa một số nguyên t: số bộ dữ liệu.
  • Mỗi bộ dữ liệu bắt đầu bằng một dòng 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ó cạnh nối đỉnh u và đỉnh v.

Dữ liệu bảo đảm đồ thị cho trong mỗi bộ dữ liệu là một cây.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra trên một dòng số lá nhỏ nhất có thể đạt được.

Ràng buộc

  • 1t104
  • 2n2·105
  • 1u,vn, uv
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 2·105

Ví dụ

Input Output Giải thích
3
7
1 2
1 3
1 4
2 5
2 6
4 7
6
1 2
1 3
2 4
2 5
3 6
2
1 2
2
2
1
Bộ 1: chọn chồi 4 treo sang đỉnh 3, sau đó chọn chồi 2 treo sang đỉnh 7, còn lại 2 lá. Bộ 2: chọn chồi 3 treo sang đỉnh 5, còn lại 2 lá. Bộ 3: cây chỉ có hai đỉnh, không có chồi nào nên đáp án là 1.
2
7
7 3
1 5
1 3
4 6
4 7
2 1
6
2 1
2 3
4 5
3 4
3 6
2
1
Bộ 1: cây là 15, 12, 13746. Treo chồi 4 (cùng con 6) sang đỉnh 5, khi đó 7 trở thành lá và 3 trở thành chồi; treo tiếp chồi 3 (cùng con 7) sang đỉnh 6, còn lại hai lá là 27. Bộ 2: cây là 123, 345, 36. Treo chồi 4 (cùng con 5) sang đỉnh 6, cây thành một đường đi 123645 chỉ còn đúng 1 lá.

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