K
KRYFT Problem Bank
알고리즘 어려움 코딩

다익스트라 최단 경로

가중치 그래프에서 최단 경로를 찾는 다익스트라 알고리즘 구현

30분
100점
3개 테스트케이스
#3688

문제 설명

가중치가 있는 방향 그래프에서 시작 노드로부터 모든 노드까지의 최단 거리를 구하는 다익스트라 알고리즘을 구현하세요.

입력 형식

첫 줄: 노드 수 N, 간선 수 M, 시작 노드 S (공백 구분)

다음 M줄: 출발노드 도착노드 가중치

출력 형식

N개의 줄에 각 노드까지의 최단 거리 출력 (도달 불가능하면 -1)

제약 조건

  • 1 ≤ N ≤ 20,000
  • 1 ≤ M ≤ 300,000
  • 가중치는 1 이상 10 이하의 자연수

힌트

우선순위 큐(최소 힙)를 사용하면 O((V+E)logV) 시간 복잡도로 구현할 수 있습니다.

예제 테스트케이스

예제 1 기본 테스트
입력
5 6 1
1 2 2
1 3 3
2 3 1
2 4 5
3 4 2
4 5 1
출력
0
2
3
5
6
예제 2 직선 경로
입력
3 2 1
1 2 5
2 3 3
출력
0
5
8
예제 3 도달 불가능 노드
입력
4 2 1
1 2 1
3 4 1
출력
0
1
-1
-1
실행 버튼을 눌러 코드를 실행하세요.