문제.
풀이.
BFS를 이용하여 1번 노드와 가장 거리가 먼 노드를 구한다.
그리고나서 그 노드와 가장 거리가 먼 노드를 구하고 그 거리를 출력한다.
소스코드.
import sys
from collections import deque
def bfs(start):
queue = deque()
visited = [-1] * (V+1)
queue.append(start)
visited[start] = 0
value = [0, 0]
while queue:
now = queue.popleft()
for next, dist in graph[now]:
if visited[next] == -1:
visited[next] = visited[now] + dist
queue.append(next)
if value[0] < visited[next]:
value = visited[next], next
return value
input = sys.stdin.readline
inf = float('inf')
V = int(input())
tree = []
graph = [[] for j in range(V+1)]
for i in range(V):
tree.append(list(map (int, input().split())))
for i in tree:
for j in range(1, len(i), 2):
if i[j] == -1:
break
graph[i[0]].append([i[j], i[j+1]])
distance, node = bfs(1)
distance, node = bfs(node)
print(distance)
'프로그래밍 > 백준' 카테고리의 다른 글
백준 2263 트리의 순회 - 파이썬 (0) | 2021.08.03 |
---|---|
백준 1991 트리의 순회 - 파이썬 (0) | 2021.08.02 |
백준 11780 플로이드 2 - 파이썬 (0) | 2021.08.02 |
백준 11779 최소비용 구하기 2 - 파이썬 (0) | 2021.08.02 |
백준 13913 숨바꼭질 4 - 파이썬 (0) | 2021.08.02 |