반응형
우선순위 큐를 사용하지 않기에, 입력 제한 값이 상당히 낮았다.(도시 갯수 500개 이하, 버스 노선 6000개 이하)
최악의 연산도 300백만경우이기에 1초 안에 계산 가능했던거 같다.
import sys
city,bus = map(int,input().split())
graph = []
for i in range(bus):
fst,scd,thd = map(int,input().split())
graph.append((fst,scd,thd))
distance = [1e9 for i in range(city+1)]
def bm(start):
distance[start] = 0
for i in range(city): #노드 수 만큼 그래프 순회하기
for j in range(bus): #간선들 순회
curs,cure,curl = graph[j]
if distance[curs]!=1e9 and distance[cure]>distance[curs]+curl: #도달 가능한 노드에 있는지 확인 작업 필수
distance[cure]=distance[curs]+curl
if i == city-1: #끊임없이 값이 갱신된다면 싸이클에 빠진것
return True
return False
if bm(1): #무한 싸이클에 빠졌다.
print(-1)
else:
for i in range(2,city+1):
if distance[i]!=1e9: #도달 가능할 시
print(distance[i])
else: #도달 불가능할 시
print(-1)반응형
'알고리즘 문제들 으악 > 백준' 카테고리의 다른 글
| [python]11726번 2×n 타일링, 문제 속 알고리즘 파악 (0) | 2023.01.17 |
|---|---|
| [python]1104번 플로이드,반복문에서 K 순서가 바깥쪽에 있는 이유 (0) | 2023.01.15 |
| [python]🔥🔥2293번 동전 1 (0) | 2023.01.14 |
| [python]🔥🔥🔥2302번 극장 좌석 (0) | 2023.01.12 |
| [python]1890번 점프 (0) | 2023.01.09 |