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

최단경로 찾기 문제
input=sys.stdin.readline 해주지 않으면 2%에서 계속 시간초과가 난다.

import heapq
import sys
input=sys.stdin.readline
INF=int(1e9)

n,m,k,x=map(int,input().split())
graph=[[] for _ in range(n+1)]
distance=[INF]*(n+1)
for i in range(m):
    a,b=map(int,input().split())
    graph[a].append((b,1))

def dijackstra(start):
    q=[]
    heapq.heappush(q,(0,start))
    distance[start]=0
    while q:
        dist,now=heapq.heappop(q)
        if distance[now]<dist:
            continue
        for i in graph[now]:
            cost=dist+i[1]
            if cost<distance[i[0]]:
                distance[i[0]]=cost
                heapq.heappush(q,(cost,i[0]))

dijackstra(x)
answer=[]

for i in range(n+1):
    if distance[i]==k:
        answer.append(i)

if answer:
    for x in answer:
        print(x)
else:
    print(-1)

좋은 웹페이지 즐겨찾기