[BOJ] 1240번 노드사이의 거리 - 파이썬

YOONKEEM·2024년 2월 2일
0

BOJ

목록 보기
51/60

📒 문제

NN개의 노드로 이루어진 트리가 주어지고 M개의 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하라.

입력

첫째 줄에 노드의 개수 NN과 거리를 알고 싶은 노드 쌍의 개수 MM이 입력되고 다음 N1N-1개의 줄에 트리 상에 연결된 두 점과 거리를 입력받는다. 그 다음 줄에는 거리를 알고 싶은 MM개의 노드 쌍이 한 줄에 한 쌍씩 입력된다.

출력

MM개의 줄에 차례대로 입력받은 두 노드 사이의 거리를 출력한다.

✏️ 풀이

from collections import deque

N, M = map(int, input().split())
tree = [[] for _ in range(N+1)]

def bfs(a, b):
    q = deque()
    q.append((a, 0))
    visit = [0 for _ in range(N+1)]
    visit[a] = 1

    while q:
        cur, cur_d = q.popleft()
        if cur == b:
            return cur_d
        for nxt, dist in tree[cur]:
            if visit[nxt] == 0:
                visit[nxt] = 1
                q.append((nxt, cur_d + dist))

for i in range(N-1):
    a, b, d = map(int, input().split())
    tree[a].append((b, d))
    tree[b].append((a, d))

want = []
for j in range(M):
    a, b = map(int, input().split())
    want.append(bfs(a, b))

for w in want:
    print(w)```
profile
진짜 개발자를 목표로 하며 전진하는 가짜 개발자입니다 😊

0개의 댓글