[백준(파이썬/Python)] 1967_트리의 지름
kindof
·2021. 8. 1. 13:30
https://www.acmicpc.net/problem/1967
백준 1167번 트리의 지름 문제와 완벽하게 동일해서 해당 문제에 대한 풀이를 참고하면 될 것 같습니다.
from collections import defaultdict, deque
import sys
def bfs(start):
node, diameter = 0, 0
visited = [False] * (n+1)
visited[start] = True
q = deque()
q.append((start, 0))
while q:
now, cost = q.popleft()
if diameter < cost:
diameter = cost
node = now
for t in tree[now]:
child, weight = t[0], t[1]
if not visited[child]:
q.append((child, cost + weight))
visited[child] = True
return node, diameter
n = int(input())
tree = defaultdict(list)
# 트리 초기화
for _ in range(n-1):
a, b, weight = map(int, sys.stdin.readline().split())
tree[a].append((b, weight))
tree[b].append((a, weight))
randomNode, maxDist = bfs(1)
randomNode, maxDist = bfs(randomNode)
print(maxDist)
'Algorithm' 카테고리의 다른 글
[백준(파이썬/Python)] 2096_내려가기 (0) | 2021.08.01 |
---|---|
[프로그래머스(파이썬/Python)] 가장 긴 팰린드롬 (0) | 2021.08.01 |
[백준(파이썬/Python)] 1256_사전 (0) | 2021.07.29 |
[백준(파이썬/Python)] 1167_트리의 지름 (0) | 2021.07.26 |
[백준(파이썬/Python)] 1477_휴게소 세우기 (0) | 2021.07.25 |