알고리즘/백준(BOJ)

[백준/BOJ] #1967: 트리의 지름 [트리/BFS/python/파이썬]

https://www.acmicpc.net/problem/1967

 

1967번: 트리의 지름

파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연

www.acmicpc.net

#1967_트리의 지름
from collections import deque
n = int(input())
tree = [[] for _ in range(n+1)]
for _ in range(1,n):
    parent, child, weight = map(int, input().split())
    tree[parent].append([weight, child])
    tree[child].append([weight, parent])

def bfs(node):
    queue=deque()
    queue.append([0,node])
    visited=[0]*n
    visited[node-1]=1

    diameter=[0,0]

    while queue:
        cnt, cur = queue.popleft()
        for i in tree[cur]:
            wei_val, nextt = i[0], i[1]
            if visited[nextt-1]==0:
                visited[nextt-1]=1
                queue.append((cnt+wei_val, nextt))

                if diameter[0] < cnt+wei_val:
                    diameter[1] = nextt
                    diameter[0] = cnt+wei_val

    return diameter

parent = bfs(1)
child = bfs(parent[1])
print(child[0])