1import sys
2sys.setrecursionlimit(10**6)
3input = sys.stdin.readline
4
5V = int(input())
6G = [[] for _ in range(V)]
7for _ in range(V):
8 token = list(map(int, input().split()))[:-1]
9 for i in range(1, len(token), 2):
10 G[token[0]-1].append((token[i]-1, token[i+1]))
11
12def dfs(node, dist):
13 global max_node, max_dist
14 visited[node] = True
15 if dist > max_dist:
16 max_node = node
17 max_dist = dist
18 for n_node, n_dist in G[node]:
19 if not visited[n_node]:
20 dfs(n_node, dist+n_dist)
21
22max_node = 0
23
24max_dist = 0
25visited = [False]*V
26dfs(0, 0)
27max_dist = 0
28visited = [False]*V
29dfs(max_node, 0)
30
31print (max_dist)
- 최근에 푼 “1967: 트리의 지름” 덕분에 쉽게 해결할 수 있었다
- 기억하자 트리의 지름 = (어떤 한 정점에서 가장 먼 점 P)에서 가장 먼 점 사이의 거리