CF796D Police Stations
题目描述
Inzane 最终找到了拥有很多闲钱的 Zane,于是他们决定一起建立自己的国家。
治理一个国家并不是一件容易的事情。小偷和恐怖分子总是准备破坏国家的安宁。为了抵御威胁,Zane 和 Inzane 制定了一条非常有效的法律:从每个城市出发,最多经过 $d$ 公里道路,必须可以到达一个警察局。

这个国家有 $n$ 个城市,编号从 $1$ 到 $n$,两两之间通过恰好 $n-1$ 条道路连接。所有道路的长度均为 $1$ 公里。最初,任意两座城市之间都可以通过这些道路互达。国家中有 $k$ 个城市设有警察局。有些城市可能有多个警察局。
特别地,城市的结构满足上述法律的要求。还要注意的是,一个城市可以有多个警察局。
然而,Zane 认为拥有多达 $n-1$ 条道路是没有必要的。国家财政紧张,因此希望关闭尽可能多的道路以减少道路养护费用。
请你帮助 Zane 找出最多可以关闭多少条道路,并输出这些道路的编号,使得法律依然成立。
输入格式
第一行包含三个整数 $n$、$k$ 和 $d$($2 \leq n \leq 3 \cdot 10^{5}$,$1 \leq k \leq 3 \cdot 10^{5}$,$0 \leq d \leq n-1$)——表示城市数量、警察局数量和距离限制。
第二行包含 $k$ 个整数 $p_1, p_2, \dots, p_k$($1 \leq p_i \leq n$),每个表示一个警察局所在的城市。
接下来的 $n-1$ 行,每行包含两个整数 $u_i$ 和 $v_i$($1 \leq u_i, v_i \leq n$,$u_i \ne v_i$),表示第 $i$ 条道路直接连接的两个城市。
保证初始时任意两城市之间都连通。且从任何城市出发,在 $d$ 公里内都能到达一个警察局。
输出格式
第一行输出一个整数 $s$,表示最多可以关闭的道路数量。
第二行输出 $s$ 个不同的整数,表示可以被关闭的道路编号,顺序不限。
若有多组方案,输出任意一组均可。
说明/提示
在第一个样例中,如果关闭第 $5$ 条道路,所有城市依然能在 $k=4$ 公里内到达警察局。
在第二个样例中,尽管这是一组最大合法的待关闭道路集合,但第二行输出 $4\ 5$ 或 $5\ 4$ 都是正确答案。
由 ChatGPT 5 翻译