
[백준(파이썬/Python)] 1967_트리의 지름
kindof
·2021. 8. 1. 13:30
https://www.acmicpc.net/problem/1967
1967번: 트리의 지름
파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연
www.acmicpc.net
백준 1167번 트리의 지름 문제와 완벽하게 동일해서 해당 문제에 대한 풀이를 참고하면 될 것 같습니다.
[백준(파이썬/Python)] 1167_트리의 지름
https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가.
studyandwrite.tistory.com
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 |