반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 28 | 29 | 30 | 31 |
Tags
- 딕셔너리
- 가상메모리 관리
- level2
- level3
- 그리디
- BOJ
- 에라스토테네스의 체
- BFS
- 프로그래머스
- 다익스트라
- level1
- dfs
- 가상메모리
- 재귀
- DP
- N과M
- 브루트포스
- 백준
- MYSQL
- 스택
- python
- 코딩테스트
- 수학
- 힙
- programmers
- 구현
- 운영체제
- 투포인터
- 다이나믹 프로그래밍
- 파이썬
Archives
- Today
- Total
동캄의 코딩도장
백준 1240 [노드 사이의 거리] 파이썬 본문
반응형
https://www.acmicpc.net/problem/1240
# 백준 1240 노드사이의 거리
import sys
from collections import deque
input = sys.stdin.readline
# N: 노드 개수, M: 거리 구해야 하는 쌍의 개수
N, M = map(int, input().split())
# 그래프 인접 리스트 초기화 (1-indexed)
graph = [[] for _ in range(N + 1)]
# 노드 간 거리 저장용 2차원 배열
# 초기에는 -1로 설정 (방문하지 않은 상태를 의미)
costs = [[-1 for _ in range(N + 1)] for _ in range(N + 1)]
# 간선 정보 입력 (양방향 연결)
for _ in range(N - 1):
A, B, cost = map(int, input().split())
graph[A].append((B, cost))
graph[B].append((A, cost))
# 각 노드 i에 대해 BFS를 수행하여 모든 다른 노드와의 거리 계산
for i in range(1, N + 1):
costs[i][i] = 0 # 자기 자신과의 거리는 0
q = deque()
q.append(i)
while q:
node = q.popleft()
for next_node, cost in graph[node]:
# 아직 방문하지 않은 노드인 경우 거리 누적
if costs[i][next_node] == -1:
costs[i][next_node] = costs[i][node] + cost
q.append(next_node)
# M개의 쿼리 처리: A와 B 노드 사이의 거리 출력
for _ in range(M):
A, B = map(int, input().split())
print(costs[A][B])반응형
'코테 > BOJ' 카테고리의 다른 글
| 백준 1167 [트리의 지름] 파이썬 (3) | 2025.08.05 |
|---|---|
| 백준 1967 [트리의 지름] 파이썬 (3) | 2025.08.04 |
| 백준 14267 [회사 문화 1] 파이썬 (1) | 2025.08.01 |
| 백준 20955 [민서의 응급 수술] 파이썬 (0) | 2025.08.01 |
| 백준 22586 [트리 순회] 파이썬 (1) | 2025.07.31 |