https://www.acmicpc.net/problem/1240
from collections import deque
import sys
input = sys.stdin.readline
N, M = map(int,input().split())
arr = [[] for _ in range(N+1)]
for _ in range(N-1):
a,b,dist = map(int,input().split())
arr[a].append((b, dist))
arr[b].append((a, dist)) # 무방향이므로 양쪽으로 연결
def bfs(start, end):
q = deque([(start, 0)])
visited = [0] * (N + 1)
visited[start] = 1
while q:
node, total_dist = q.popleft()
if node == end:
return total_dist
for nxt, dist in arr[node]:
if not visited[nxt]:
visited[nxt] = 1
q.append((nxt, total_dist + dist))
for _ in range(M):
a, b = map(int, input().split())
ans = bfs(a,b)
print(ans)
- 노드 사이의 관계(거리)를 구하는 문제이므로 BFS 사용!
'백준' 카테고리의 다른 글
백준 1865. 웜홀 (0) | 2024.11.03 |
---|---|
백준 1197. 최소 스패닝 트리 (0) | 2024.11.03 |
백준 1717. 집합의 표현 (0) | 2024.11.03 |
백준 2458. 키 순서 (0) | 2024.11.02 |
백준 2660. 회장뽑기 (0) | 2024.10.30 |