如果以某个结点为全树的根,只存在一棵子树中存在其颜色,那么说明该结点是一个端点。
对于一种颜色:
- 如果不存在端点,答案为 \(\frac{n\times(n-1)}{2}\)。
- 如果存在一个端点,答案为该端点各子树大小两两乘积之和加上 \(n-1\)。
- 如果存在两个端点,两个端点能取的数量为 \(n\) 减去对方所在子树的子树大小之和,乘起来即为答案。
- 三个及以上端点答案为 \(0\)。
通过一个 DFS 即可解决。细节还是有一点的,稍微注意一下。
毒瘤加强版,存端点记得把 vector 换成数组,建边用链式前向星,不然开 O2 也过不去的。
标签:存在,子树,答案,端点,P5588,佩奇,小猪 From: https://www.cnblogs.com/landsol/p/17802328.html