본문 바로가기
문제 풀이/백준(BOJ)

[Python] 백준 18352번 : 특정 거리의 도시 찾기

by 희조당 2022. 8. 16.
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)

댓글