Python/백준

1967_트리의 지름

728x90

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

 

1967번: 트리의 지름

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

www.acmicpc.net

 

 

저번 글에서 트리의 지름을 구했던 것과 같은 방식으로 구할 수 있다.

 

import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
graph = [ [] for _ in range(n+1)]

for _ in range(n-1):
    a,b,w = map(int,input().split())
    graph[a].append((b,w))
    graph[b].append((a,w))

def bfs(start):
    q = deque([start])
    visited = [-1] * (n + 1)
    visited[start] = 0
    result = [0, 0]
    while q:
        node = q.popleft()
        for next,w in graph[node]:
            if visited[next] == -1:
                visited[next] = visited[node] + w
                q.append(next)
                if result[1] < visited[next]:
                    result[1] = visited[next]
                    result[0] = next
    return result

node,weight = bfs(1)
node,weight = bfs(node)
print(weight)
728x90

'Python > 백준' 카테고리의 다른 글

2263_트리의 순회 (메모리초과 나온다면?)  (0) 2022.05.05
1991_트리 순회  (0) 2022.05.04
1167_트리의지름  (0) 2022.05.02
11725_트리의 부모 찾기  (0) 2022.05.01
11700_플로이드2  (0) 2022.04.30