[CEOI2020] 春季大扫除
题目背景
0.3s,128MB
题目描述
春季大扫除也许是我们一生中最无聊的事情之一。当然,对于 Flóra 和她的母亲而言,今年的春季大扫除要有意思得多。因为她们在地毯下发现了一张已被灰尘覆盖的树形地图。
这棵树有 $N$ 个节点,节点从 $1$ 到 $N$ 进行编号,这 $N$ 个点通过 $N-1$ 条边相连。这些边上都积累了过多的灰尘,因此 Flóra 的母亲准备对这棵树进行清理。
清理这棵树的过程是这样的:Flóra 的母亲每次在这棵树上选择两个叶子节点(定义一棵树的叶子节点为只与恰好一个点直接相连的点),并对这两个叶子点路径上的所有边进行清理。如果这条路径上有 $d$ 条边,则清理的费用为 $d$。当这棵树上的所有边都被清理后,这棵树的清理过程就完成了。清理这棵树的总费用即为各次清理的费用之和。
因为她想保护这棵树的叶子节点,因此对于每个叶子节点,她最多只会选择一次。
Flóra 认为原来的树过于简单,她决定对原始的树进行一些改造。在第 $i$ 次改造中,她在原始的树的基础上添加了 $D_i$ 个叶子节点。具体来说,她会在原始的树上选择一个节点,并在该点与新的叶子节点之间连接一条边。需要注意的是,在添加新的叶子节点的过程中,原来的一些节点将不再是叶子节点。
现在你需要帮助 Flóra 求出清理改造后的树的最小费用。
输入输出格式
输入格式
输入第一行包含两个数 $N,Q$,分别代表原始的树上的节点数,以及 Flóra 准备对原始的树进行的改造次数。
接下来 $N-1$ 行,每行两个整数 $u,v$,表示在原始的树上 $u,v$ 两个节点间有一条边相连。
接下来 $Q$ 行,每行第一个整数 $D_i$,表示 Flóra 准备在第 $i$ 次改造中添加 $D_i$ 个叶子节点。接下来 $D_i$ 个整数,第 $j$ 个整数 $a_j$ 表示 Flóra 准备在 $a_j$ 号点上添加一个叶子节点。同一个点上可能会添加多个叶子节点。
每次改造过程是独立的,即在一轮改造后,Flóra 会在原始的树上重新开始改造过程。
输出格式
对于每次改造,你需要输出一个整数,表示清理这棵改造后的树的最小费用。
特别地,若这棵树不能被完全清理,输出 $-1$。
输入输出样例
输入样例 #1
7 3
1 2
2 4
4 5
5 6
5 7
3 4
1 4
2 2 4
1 1
输出样例 #1
-1
10
8
说明
### 样例解释
下面展示的是第二次改造后的树:
![](https://cdn.luogu.com.cn/upload/image_hosting/9rj8iovq.png)
一种最优的清理方案是清理 $1-6$,$A-7$,$B-3$ 这三条路径上的所有边。
### 子任务
所有测试点均满足:$3 \leq N \leq 10^5$,$1 \leq Q \leq 10^5$,$\sum D_i \leq 10^5$,$1 \leq u,v \leq N$,$1 \leq a_j \leq N$。
各子任务的约束条件如下:
| 子任务编号 | 分值 | 约束 |
| ---------- | ---- | ------------------------------------------------------------ |
| $1$ | $0$ | 样例 |
| $2$ | $9$ | $Q=1$,$\forall i \in [2,N]$,都存在一条连接 $1$ 和 $i$ 的边,且 Flóra 不会在 $1$ 号点上添加叶子节点 |
| $3$ | $9$ | $Q=1$,$\forall i \in [1,N)$,$i$ 和 $i+1$ 之间有边相连,且 Flóra 不会在 $1$ 号点或 $N$ 号点上添加叶子节点 |
| $4$ | $16$ | $N \leq 2 \times 10^4$,$Q \leq 300$ |
| $5$ | $19$ | 原始的树是一棵以 $1$ 号点为根的满二叉树,即每个非叶子节点均有恰好两个子节点,且各叶子节点到根节点间的距离相等 |
| $6$ | $17$ | $\forall i \in [1,Q]$,$D_i=1$ |
| $7$ | $30$ | 无特殊约束 |