BOJ 18352 특정 거리의 도시 찾기

LONGNEW·2020년 12월 27일
0

BOJ

목록 보기
10/333

acmicpc.net/problem/18352

시간 2초, 메모리 256MB
input:

  • 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X
    (2 <= N <= 300,000, 1 <= M <= 1,000,000, 1<= K <= 300,000, 1 <= X <= N)

  • A B (A번 도시에서 B번 도시로 이동하는 단 방향 도로 / A에서 B로만 갈 수 있다.)
    output:

  • 최단 거리가 K인 모든 도시의 번호를 오름차순으로 출력.

  • 최단 거리가 K인 도시가 없으면 -1을 출력.


단방향 도로를 나타낼 그래프,
최단 거리를 기록할 distance 리스트, visited는 거리를 이용해서 나타낼 수 있다.

되도 않는 출발 도시 초기화 안 했다가 한 번 틀리고.
input.split() 으로 해서 시간 초과도 계속 나고.
sys.stdin.readline()를 쓰긴 해야 겠다.

from _collections import deque
import sys
N, M, K, X = map(int, sys.stdin.readline().split())
graph = [[] for _ in range(N + 1)]
for _ in range(M):
    A, B = map(int, sys.stdin.readline().split())
    graph[A].append(B)

dis = [-1] * (N + 1)
dis[X] = 0
q = deque([X])

while q:
    node = q.popleft()
    for next_node in graph[node]:
        if dis[next_node] == -1:
            dis[next_node] = dis[node] + 1
            q.append(next_node)

check = False
for i in range(1, len(dis)):
    if dis[i] == K:
        print(i)
        check = True

if not check:
    print(-1)

0개의 댓글