我有一个有N个节点的树。 k路径以u,v的形式给出。 现在,问题是找到从u到v(而不是找到节点本身)时遍历树节点的最大次数。
例如对于以下实例:
1
/ \
2 3
/ \
4 5
路径:1,5; 2,3,
ans将为2,因为节点1在两个路径中出现两次(对于节点2也是如此,但只需要计数)。
枚举所有路径是直接的方式,但是不可行,因为k <= N <= 10 ^ 5且在最坏的情况下天真的方法是O(N ^ 2)。
我相信应该有一些预处理树的方法,让我们可以在给定的每条路径的恒定时间内找到最大数量。
或许,需要一种完全不同的方法。
我正在寻找正确方向的一些指示。有什么建议? 任何帮助表示赞赏。
编辑:树可能不是二进制文件。唯一的规格是它是一棵树。 N个节点和N-1个边缘。