DHistory
[Baekjoon] Shortest Path - 18352 특정 거리의 도시 찾기 본문
Computer Science/Algorithm
[Baekjoon] Shortest Path - 18352 특정 거리의 도시 찾기
ddu0422 2023. 10. 30. 15:53문제
풀이
BFS나 DFS를 이용하여 모든 도시로 갈 수 있는 최단의 거리를 구한다.
이 후 최단 거리에 도달한 도시만 출력한다.
import sys
from collections import deque
INF = 1e9
n, m, k, x = map(int, sys.stdin.readline().rstrip().split())
distance = [INF] * (n + 1)
graph = [[] for _ in range(n + 1)]
for _ in range(m):
a, b = map(int, sys.stdin.readline().rstrip().split())
graph[a].append((b, 1))
def bfs(start, distance, graph, k):
queue = deque([])
queue.append((start, 0))
distance[start] = 0
while queue:
now, dist = queue.popleft()
for v in graph[now]:
cost = dist + v[1]
if distance[v[0]] > cost:
distance[v[0]] = cost
queue.append((v[0], cost))
return [i for i in range(1, n + 1) if distance[i] == k] or [-1]
for value in sorted(bfs(x, distance, graph, k)):
print(value)
채점 결과
'Computer Science > Algorithm' 카테고리의 다른 글
[Baekjoon] Shortest Path - 11403 경로 찾기 (0) | 2023.10.30 |
---|---|
[Baekjoon] Shortest Path - 1058 친구 (0) | 2023.10.30 |
[Baekjoon] DP - 1495 기타리스트 (오답노트) (0) | 2023.10.26 |
[Baekjoon] DP - 10164 격자상의 경로 (0) | 2023.10.25 |
[Baekjoon] DP - 2302 극장 좌석 (0) | 2023.10.25 |