bong-u/til

백준 - 1967 : 트리의 지름(G4)

수정일 : 2024-11-15

 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에서 가장 먼 정점 사이의 거리가 트리의 지름과 같다

느낀 점

  • 루트를 구할 필요가 없다는 것을 깨달았다