解法一:淀粉的另一种形式。
正常淀粉求得是每条路径,此题要求每个点为端点的所有路径,所以处理当前连通块时不仅要考虑根的答案,也要考虑根的子树对另一棵子树的影响。
解法二:考虑颜色的贡献。
跳出对点的答案的计算,思考每种颜色分别的贡献。对于每种颜色,\(i\) 对于 \(j\) 没有该颜色的贡献,当且仅当 \(i,j\) 之间的路径上没有这种颜色,所以考虑删掉每一种颜色,每个点的答案就是 \(n-\text{i 所在连通块的 siz}\)。
另一个性质:每个点只有一种颜色,所以每个点都只会是它自己颜色的分割点,所以一个点只会是一个连通块的根,而以 \(x\) 为根连通块的颜色就是 \(a_{fa_x}\),可以把一个颜色连通块的 \(siz\) 存在这个连通块的根上,从上向下计算。具体实现使用了很不聪明的虚树,被题解 \(\mathcal O(n)\) 吊打/kk。
标签:连通,P2664,颜色,游戏,siz,路径,树上,每个 From: https://www.cnblogs.com/WrongAnswer90-home/p/17756236.html