这样的做法有点讨论区博客,但请见谅,我想让更多人看到这个。
平时各位求树的直径的时候通常使用的是两遍 dfs,但是这个算法在负权边时可以被卡掉。
下面的数据就可以:
5 1 2 100 1 3 -100 3 4 -100 4 5 200
两遍 dfs 程序一般会输出 100(假如你第一遍 dfs 的起点不是 5 的话)。
而求一个点往下的最长链和次长链做法会输出 200,这是正确的答案。
今天给人调题的时候刚刚发现的。
请勿喷,这是一位初二老年选手非常激动的发现。