티스토리 뷰

ps

BOJ 11657(타임머신)풀이

KWG07(joseph0528) 2021. 5. 1. 12:27

solved.ac 티어 : 골드 4

 

www.acmicpc.net/problem/11657

 

11657번: 타임머신

첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. 

www.acmicpc.net

문제보면 바로 다익스트라인걸 알수있다. 다익스트라를 구현해주고 출력하면 된다.

import sys,math
input=sys.stdin.readline
n,m=map(int,input().split())
adj=[[]for i in range(n)]
inf=math.inf
for i in range(m):a,b,c=map(int,input().split());adj[a-1].append([b-1,c])
ch=0;dist=[0]+[inf for i in range(n-1)]
for i in range(n):
    for g in range(n):
        for q in adj[g]:
            nex=q[0];d=q[1]
            #print(dist[g]+d)
            if dist[g]!=inf and dist[nex]>dist[g]+d:
                dist[nex]=dist[g]+d
                if i==n-1:ch=1
if ch:print(-1)
else:
    for i in range(1,n):
        if dist[i]!=inf:print(dist[i])
        else:print(-1)

'ps' 카테고리의 다른 글

BOJ 5676(음주 코딩)풀이  (0) 2021.05.08
BOJ 2146(다리 만들기)풀이  (1) 2021.05.02
BOJ 1967(트리의 지름)풀이  (0) 2021.04.29
BOJ 2206(벽 부수고 이동하기)풀이  (0) 2021.04.27
BOJ 1937(욕심쟁이 판다)풀이  (0) 2021.03.21
댓글