T158449 【DSOI 备用】侦察
题目描述
攸宁非常喜欢玩一个叫做《树国建设者》的游戏,他在这个游戏里当起了国王。
树王国原来是一个非常宁静且和平的国度,可有一天,一群恐怖分子袭击了这里。
树王国由 $n$ 个城市和 $n-1$ 条双向道路组成,这些城市由 $1 \sim n$ 进行标号。显然地,这是一棵树。其中 $1$ 号节点为树王国的首都(即树根)。现在,恐怖分子控制住了其中的 $m$ 个城市,特别的,首都是不会被控制的。如果一个城市被控制,那么这个城市通往其子树的边以及其子树中的边都会被控制。被控制的边将会失去通讯功能,因此树王国需要派遣若干支侦察小队前去其中的一些点进行侦察。如果一个小队被安置在一个结点上,那么该结点通往其子树的所有边将都可以被侦察到。显然,只要安置足够多的小队,就能使所有被控制的边都被侦察到。
但是事情没有这么简单,处于隐蔽考虑,树王国不能在一条路上运输过多的小队,因此我们认为每一条边都有一个运载能力 $w_i$,表示该边最多只能承受 $w_i$ 的运输压力。如果我们在一个结点放置了一支运输小队,则从首都到这个结点的所有边都将会承载 $1$ 的运输压力。
现在,攸宁想要在没有任何一条边超出运载能力的情况下, 使尽可能少的被控制边无法被侦察到。请你告诉攸宁,这个最小值为多少。若所有被控制边都能够被侦察到,请告诉攸宁最少需要派遣几支侦察小队。
输入格式
第一行包含两个正整数 $n$ 和 $m$,意义见题目描述。\
接下来 $n-1$ 行,每行三个正整数 $u_i,v_i,w_i$,表示存在一条道路联通 $u_i$ 和 $v_i$,且该边的运载能力为 $w_i$。\
接下来一行,包含 $m$ 个正整数,每个正整数 $a_i$ 表示被恐怖分子控制住的城市的结点标号。
输出格式
如果无法做到使所有被控制边都被观察到,第一行输出一个字符串`No`,第二行输出一个整数,表示无法被观察到的被控制边数的最小值。\
否则第一行输出一个字符串`Yes`,第二行输出一个整数,表示所需派遣侦察小队数量的最小值。
说明/提示
#### 【样例 1 解释】
\
在 $2$ 结点放置一支小队,可以观察到边 $2-3$ 和 $2-4$ ,然后再在 $5$ 结点放置一支小队,仅能观察到 $5-6$(也可以在 $6$ 结点放置一支小队,仅能观察到 $6-7$ ,结果不变 )。
#### 【样例 2 解释】
\
在 $2$ 结点放置一支小队,所有被控制的边都能够被观察到。
#### 【数据范围与提示】
**本题采用捆绑测试。** 你必须通过 Subtask 中所有的测试点才能获得该 Subtask 的分数。
对于 $100\%$ 的数据:$1 \le n \le 10^5,1 \le m \le n-1,2 \le a_i \le n,0 \le w_i \le n-1,1 \le u_i,v_i \le n$。
| Subtask | 分值 | $n \le$ | 特殊性质 |
| :--------: | :---: | :-----: | :--------------: |
| 1 | 15pts | $8$ | 无 |
| 2 | 20pts | $400$ | 无 |
| 3 | 15pts | $4000$ | 无 |
| 4 | 10pts | $10^5$ | $w_i=n-1$ |
| 5 | 15pts | $10^5$ | 保证数据随机生成 |
| 6 | 25pts | $10^5$ | 无 |