最近共同祖先(Lowest Common Ancestor,LCA)定義為在一棵樹上,兩個節點u和v,它們離根節點最遠的也就是深度愈低的共同祖先,只有唯一一個。
這題要求任意兩點間的最短路徑,但是因為N太大,所以Floyd-Warshall最短路徑演算法就沒辦法了,而這題有保證這張圖是一棵樹,因為任一兩點u和v之間的最短路徑,以樹來看一定會經過他們的LCA,所以可以得到u和v最短路徑就是dist(root, u) + dist(root, v) – dist(root, LCA(u,v)) * 2,實際畫畫看很好懂。