관리 메뉴

어읽로꾸거

BOJ 1854 K번째 최단경로 찾기 본문

알고리즘

BOJ 1854 K번째 최단경로 찾기

어읽로꾸거 2019. 4. 11. 19:10

백준 1854 링크

https://www.acmicpc.net/problem/1854

문제 풀이

dp[현재위치][k번째로 빨리 도착함]배열을 이용해 풀었습니다.


어제 푼 문제인 도로포장 과 상당히 비슷한 문제라는 생각이 드네요

 

BOJ 1162 도로포장

백준 1162 도로포장 링크 https://www.acmicpc.net/problem/1162 1162번: 도로포장 문제 준영이는 매일 서울에서 포천까지 출퇴근을 한다. 하지만 잠이 많은 준영이는 늦잠을 자 포천에 늦게 도착하기 일쑤다. 돈..

postbarca.tistory.com

 

파이썬으로 문제를 풀다보니까 Cpp랑 다른점이 많이 있네요

input=__import__('sys').stdin.readline

이 한줄이 없으면 시간초과 때문에 Python3로는 통과를 하지 못합니다. pypy3로는 바로 통과하지만...

코드

from heapq import *
input=__import__('sys').stdin.readline
n,m,k = map(int, input().split())
dp=[[float("inf")]*(k) for _ in range(n+1)]
con=[[] for _ in range(n+1)]
for _ in range(m):
    a,b,c=map(int, input().split())
    con[a].append((b,c))
q=[]
heappush(q,(0,1))
dp[1][0]=0
while q:
    cost,now = heappop(q)   
    for next,tcost in con[now]:
        if dp[next][k-1]>cost+tcost:
            dp[next][k-1]=(cost+tcost)
            dp[next]=sorted(dp[next])
            heappush(q,(cost+tcost,next))
for _ in range(1,n+1):
    print(-1 if dp[_][k-1]==float("inf") else dp[_][k-1])

'알고리즘' 카테고리의 다른 글

BOJ 1926 그림  (0) 2019.04.17
BOJ 2206 벽 부수고 이동하기  (0) 2019.04.16
BOJ 1743 음식물 피하기  (0) 2019.04.11
BOJ 1162 도로포장  (0) 2019.04.10
BOJ 1068 트리  (0) 2019.04.07