티스토리 뷰
728x90
https://www.acmicpc.net/problem/1240
- 해설 :
N개의 노드로 이루어진 트리가 주어지고, 노드 사이의 거리 M개가 주어질 때, testCase에 대해 노드 사이의 거리를 출력하는 문제이다.
- 풀이 :
양방향 연결이므로 노드 사이의 거리와 연결 정보를 0번노드부터 N-1번 노드까지 가공한 후 이를 BFS로 탐색하며 원하는 노드가 나왔을 때 거리를 출력한다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import sys
from collections import deque
def bfs(start,end):
queue = deque([start])
length = [-1 for _ in range(n+1)]
length[start] = 0
while queue:
s = queue.popleft()
for e,w in tree[s]:
if length[e] == -1:
queue.append(e)
length[e] = max(length[s] + w,length[e])
return length[end]
if __name__ == "__main__":
n,m = map(int,sys.stdin.readline().split())
tree = [[] for _ in range(n+1)]
for _ in range(n-1):
s,e,w = map(int,input().split())
tree[s].append([e,w])
tree[e].append([s,w])
for _ in range(m):
start,end = map(int,input().split())
print(bfs(start,end))
|
cs |
320x100
'Algorithm > DFS & BFS' 카테고리의 다른 글
(Python) - BOJ(1303번) : 전투 (0) | 2022.01.26 |
---|---|
(Python) - BOJ(1260번) : DFS와 BFS (0) | 2022.01.26 |
(Python) - BOJ(1167번) : 트리의 지름 (0) | 2022.01.25 |
(Python) - BOJ(1012번) : 유기농 배추 (0) | 2022.01.24 |
(Python) - 프로그래머스 : 전력망을 둘로 나누기 (0) | 2022.01.21 |
댓글
© 2022 WonSeok, All rights reserved