문제 (https://www.acmicpc.net/problem/11779)
출발 도시에서 도착 도시까지의 최소 비용을 구하는 일반적인 다익스트라 문제이다. 다른 문제들과 차이점은 최소 비용뿐만 아니라 경로에 포함되어있는 도시의 개수와 방문하는 도시 번호도 출력해야 한다.
따라서 배열을 생성하여 각 도시에 도달하기 위해서는 몇 번 도시에서 출발해야 하는지를 기록했다.
예를 들어, route[a] = b는 "a번에 최소로 도달하기 위해서는 b번에서 와야 한다"라는 의미이다.
route[start] = 0으로 설정해주고 route[end] 값부터 역순으로 경로를 체크한다.
end 값 -> end번에 최소로 도달하기 위한 이전 번호 -> ... -> start 다음으로 방문하는 도시 번호-> start 값
역순으로 경로를 체크했으므로 reverse 함수를 사용한 후 정답을 출력했다.
[소스코드]
'ALGORITHM > BOJ' 카테고리의 다른 글
[BOJ] 3020번 개똥벌레 (C++) (0) | 2022.01.05 |
---|---|
[BOJ] 4386번 별자리 만들기 (C++) (0) | 2022.01.04 |
[BOJ] 1484번 다이어트 (C++) (0) | 2022.01.03 |
[BOJ] 1644번 소수의 연속합 (C++) (0) | 2022.01.03 |
[BOJ] 2470번 두 용액 (C++) (0) | 2022.01.03 |