1import sys
2sys.setrecursionlimit(10**6)
3M = int(input())
4G = [[] for _ in range(M)]
5
6for _ in range(M-1):
7 a, b, c = map(int, input().split())
8 G[a-1].append((b-1, c))
9 G[b-1].append((a-1, c))
10
11n1 = 0
12tmp = 0
13
14def dfs(node, length):
15 global n1, tmp
16 visit[node] = True
17 if length > tmp:
18 tmp = length
19 n1 = node
20 for child, v in G[node]:
21 if not visit[child]:
22 dfs(child, length+v)
23
24visit = [False]*M
25dfs(0, 0)
26tmp = 0
27visit = [False]*M
28dfs(n1, 0)
29print (tmp)
해결 방법
- 아무 정점에서 가장 먼 어떤 정점을 N이라고 하자
- 정점 N에서 가장 먼 정점 사이의 거리가 트리의 지름과 같다
느낀 점