https://www.acmicpc.net/problem/1167 서로 다른 두 노드를 잇는 최단 경로는 두 노드의 최소 공통 조상을 거친다는 것을 먼저 관찰해야 한다. (물론 최소 공통 조상이라는 용어를 꼭 알아야 이런 생각을 하는 건 아니다. LCA 알고리즘은 이 문제에서 전혀 쓰이지 않는다) 이걸 관찰하는 데에 성공했으면 최소 공통 조상의 관점으로 이 문제를 풀어볼 생각을 할 수 있다. 즉 각각의 노드에 대해 그 노드를 최소 공통 조상으로 갖는 두 노드 쌍 중에서 거리가 최대인 것을 찾으면 된다. 그러려면 각각의 노드 v에 대해 v를 루트로 갖는 서브트리의 노드 중에서 v와의 거리가 최대인 것과 2번째로 큰 것을 찾아야 한다. (물론 가중치가 양수이므로 이 두 노드들은 전부 리프 노드들일 것이다) ..