P5588 小猪佩奇爬树

发布时间 2023-11-01 09:37:58作者: 御坂夏铃

如果以某个结点为全树的根,只存在一棵子树中存在其颜色,那么说明该结点是一个端点。

对于一种颜色:

  • 如果不存在端点,答案为 \(\frac{n\times(n-1)}{2}\)
  • 如果存在一个端点,答案为该端点各子树大小两两乘积之和加上 \(n-1\)
  • 如果存在两个端点,两个端点能取的数量为 \(n\) 减去对方所在子树的子树大小之和,乘起来即为答案。
  • 三个及以上端点答案为 \(0\)

通过一个 DFS 即可解决。细节还是有一点的,稍微注意一下。

毒瘤加强版,存端点记得把 vector 换成数组,建边用链式前向星,不然开 O2 也过不去的。