G即使是一棵树,也要为每个顶点找到到其他顶点的最长路径



所以我有一个如上所述的问题。我在想一些dp,但我不是很擅长…

示例:5个顶点,连接对:(1,2((1,3((3,4((3,5(

每个顶点(和路径(的答案:1:2(1-3-4(2:3(2-1-3-4(3:2(3-1-2(4:3(4-3-1-2(5:3(5-3-1-2(

我假设的是无向树。

如果你想让每个顶点v显式地找到从v开始的最长路径,那么从每个顶点开始的BFS/DFS就很好了,因为最长路径的总和可能高达n2(如果你喜欢这样称呼的话,这是一个退化树,就像一条线或分支(。由于内存消耗是每个算法的下限,因此在最坏的情况下,算法的运行时间将为Θ(n2(。

如果你只想要最长路径的值,我建议你阅读这篇关于树上动态编程的文章,特别是问题Tree Distances i的解决方案,因为它与你所要求的完全相同。YouTube上甚至有一个解释,c++中也有一个公认的代码示例。

最新更新