給一棵 樹,每條邊都有權重,定義一條路徑的長度為該路徑上每條邊的權重和。
樹上的任何最長長度的簡單路徑都是此樹的直徑。
現在請你找到此樹上的任意一條直徑。
任選一點(令其為 )出發,做一次 DFS 或 BFS 找到樹上離 最遠的點 ,可證明點 一定是某條直徑到其中一個端點,所以再從點 出發做一次 DFS/BFS 找到離點 最遠的點 ,那麼點 和點 形成的路徑就是直徑。
可測試題目:TIOJ1213. 樹論 之 最遠距點對
定義 代表以點 和點 為端點的簡單路徑, 為 的長度。
我們只需證明,對於任一個點 當作此樹的樹根,那麼距離點 最遠的任一個葉子一定是某條直徑的端點即可。
使用反證法,令其中一個距離 最遠的葉子為 ,假設 並非任何一條直徑的端點。並假設 是某條直徑的兩個端點,那麼有以下兩種情況:
在由於在兩種情況都矛盾,所以 必定是某條直徑的端點。