상세 컨텐츠

본문 제목

[백준][BOJ1753] 최단경로

Algorithm/Dijkstra

by bedamino 2021. 7. 7. 22:22

본문

1. 문제 : https://www.acmicpc.net/problem/1753

 

1753번: 최단경로

첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다.

www.acmicpc.net


2. 풀이 : Dijkstra


3. 시간복잡도 : O(ElogV)


4. 설명

그림[1]의 그래프에서 시작점이 1번 노드 일 때, 각 노드까지의 최단거리를 구하는 방법은 다음과 같다.

시작점인 1번 노드를 우선순위큐에 삽입한다. 시작점에서 시작점까지의 최단거리는 0이다.

그림[1]

노드 1에서 최단 거리로 방문 할 수 있는 노드를 우선순위큐에 삽입하고, 최단 거리를 갱신한다.

그림[2]

노드 2에서 최단 거리로 방문 할 수 있는 노드를 우선순위큐에 삽입하고, 최단 거리를 갱신한다.

그림[3]

노드 3에서 최단 거리로 방문 할 수 있는 노드를 우선순위큐에 삽입하고, 최단 거리를 갱신한다.

그림[4]

노드 5에서 최단 거리로 방문 할 수 있는 노드를 우선순위큐에 삽입하고, 최단 거리를 갱신한다.

그림[5]

노드 4에서 최단 거리로 방문 할 수 있는 노드를 우선순위큐에 삽입하고, 최단 거리를 갱신한다.

그림[6]

노드 8에서 최단 거리로 방문 할 수 있는 노드를 우선순위큐에 삽입하고, 최단 거리를 갱신한다.

그림[7]

우선순위큐에 남아있는 나머지 노드 정보는 최단 거리에 영향을 주지 않으므로, 1번 노드에서 각 노드까지의 최단 거리는 그림[8]과 같다.

그림[8]


5. 코드

'Algorithm > Dijkstra' 카테고리의 다른 글

[백준][BOJ2211] 네트워크 복구  (0) 2021.07.21
[백준][BOJ11779] 최소비용 구하기 2  (0) 2021.07.14
[백준][BOJ10282] 해킹  (0) 2021.07.14

관련글 더보기

댓글 영역