CF1566E Buds Re-hanging

题目描述

一棵树是一个无环连通图。有根树有一个特殊的顶点,称为根。顶点 $v$(不同于根)的父亲是从根到顶点 $v$ 的最短路径上的前一个顶点。顶点 $v$ 的子节点是所有以 $v$ 为父亲的顶点。 如果一个顶点没有子节点,则称其为叶子。我们称一个顶点为“芽”,如果满足以下三个条件: - 它不是根节点; - 它至少有一个子节点; - 它的所有子节点都是叶子。 给定一棵有 $n$ 个顶点的有根树,顶点 $1$ 是根。在一次操作中,你可以选择任意一个“芽”及其所有子节点(这些子节点都是叶子),并将它们挂到树中的任意其他顶点下。这样做时,你会删除连接“芽”与其父节点的边,并添加一条“芽”与所选顶点之间的边。所选顶点不能是该“芽”自身或其任何子节点。所有“芽”的子节点仍然与“芽”相连。 你可以进行任意次数上述操作(也可以不操作)。请问,经过若干次操作后,树中最少能有多少个叶子?

输入格式

输入包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^5$),表示树中顶点的数量。 接下来的 $n-1$ 行,每行包含两个整数 $u$ 和 $v$($1 \le u, v \le n$,$u \neq v$),表示树中存在一条连接顶点 $u$ 和 $v$ 的边。 保证给定的图是一棵树。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一个整数,表示经过若干次操作后树中可能得到的最少叶子数。

说明/提示

在第一个测试用例中,树的结构如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1566E/0d2a2e94983d55330dac54f278d1a33d1eb1221d.png) 首先,你可以选择“芽”顶点 $4$ 并将其挂到顶点 $3$ 下。之后,你可以选择“芽”顶点 $2$ 并将其挂到顶点 $7$ 下。最终,你将得到如下结构的树,有 $2$ 个叶子: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1566E/146e9305c79679a883d051dcc15fe610857df849.png) 可以证明,这就是可能得到的最少叶子数。 在第二个测试用例中,树的结构如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1566E/c78997ae531f85421ad1ff3c7eaaf49571559377.png) 你可以选择“芽”顶点 $3$ 并将其挂到顶点 $5$ 下。最终,你将得到如下结构的树,有 $2$ 个叶子: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1566E/b4fd18b6b31191b690cb273c6f18bb397eaf968d.png) 可以证明,这就是可能得到的最少叶子数。 由 ChatGPT 4.1 翻译