2421. Number of Good Paths
这题我很有印象
是我参加的第二场的周赛的最后一题
也是我第一个没写出来的周赛题
所以已经写过一次了
不过当初的文已经被砍了
这题是图论的 connectivity 问题
可以用 union find 做(又是 union find!)
如果我们想要找出所有头尾的值是 p 的 good path
对任意 u, v 且 vals[u] = vals[v] = p 而言
这两点之间存在 good path 等价于:
在只考虑那些两端的值都 <= p 的边时这两点是否连通
是否连通用 union find 就可
把有同样 parent 的点收集起来
他们之间的配对有 C n 取 2 种
还要包含单独一个点的 path
因为树上任两点恰有一条路径
所以只要算有多少 u, v 之间存在 good path 即可