ALGORITHM/BOJ

[BOJ] 11779번 최소비용 구하기 2 (C++)

yegyeom 2022. 1. 4. 00:33

문제 (https://www.acmicpc.net/problem/11779)

 

11779번: 최소비용 구하기 2

첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스

www.acmicpc.net

출발 도시에서 도착 도시까지의 최소 비용을 구하는 일반적인 다익스트라 문제이다. 다른 문제들과 차이점은 최소 비용뿐만 아니라 경로에 포함되어있는 도시의 개수와 방문하는 도시 번호도 출력해야 한다.

 

따라서 배열을 생성하여 각 도시에 도달하기 위해서는 몇 번 도시에서 출발해야 하는지를 기록했다.

예를 들어, route[a] = b는 "a번에 최소로 도달하기 위해서는 b번에서 와야 한다"라는 의미이다.

 

route[start] = 0으로 설정해주고 route[end] 값부터 역순으로 경로를 체크한다.

end 값 -> end번에 최소로 도달하기 위한 이전 번호 -> ... -> start 다음으로 방문하는 도시 번호-> start 값

역순으로 경로를 체크했으므로 reverse 함수를 사용한 후 정답을 출력했다.


[소스코드]