문제 풀이/백준(BOJ)
[Python] 백준 18352번 : 특정 거리의 도시 찾기
희조당
2022. 8. 16. 00:56
728x90
https://www.acmicpc.net/problem/18352
18352번: 특정 거리의 도시 찾기
첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개
www.acmicpc.net
💡 문제 풀이
그래프 탐색 문제이다.
BFS와 다익스트라 알고리즘 2가지로 해결할 수 있다.
출발지점부터 큐에 넣고 가중치를 계산해주면 된다.
✔️ 느낀 점
코드를 짜다보니 어쩌다 보니 BFS로 구현했다.
💻 코드
import sys
from collections import deque
input = sys.stdin.readline
INF = int(10e9)
N, M, K, X = map(int, input().split())
graph = [[] for _ in range(N+1)]
for _ in range(M):
start, end = map(int, input().split())
graph[start].append(end)
dist = [INF] * (N+1)
dist[X] = 0
q = deque([X])
while q:
node = q.popleft()
for n in graph[node]:
if dist[n] == INF:
dist[n] = min(dist[n], dist[node] + 1)
q.append(n)
if K not in dist:
print(-1)
exit(0)
for i in range(1, N+1):
if dist[i] == K:
print(i)