티스토리 뷰
https://www.acmicpc.net/problem/2157
2157번: 여행
첫째 줄에 N(1 ≤ N ≤ 300), M(2 ≤ M ≤ N), K(1 ≤ K ≤ 100,000)가 주어진다. K는 개설된 항공로의 개수이다. 다음 K개의 줄에는 각 항공로에 대한 정보를 나타내는 세 정수 a, b, c(1 ≤ a, b ≤ N, 1 ≤ c ≤ 1
www.acmicpc.net
이동은 작은번호에서 큰 번호 만 가능하다고 했기 때문에 입력을 받을때 큰번호->작은번호는 저장 자체를 안해주면 된다.
기본적으로 다익스트라처럼 d[i] 에 i번 노드에 도착했을때 먹을수 있는 최대 기내식을 저장하고,
다음 노드로 이동했을때 기내식 점수를 계산해서 d 에 저장되어 있는 점수보다 작다면 이동하지 않으면 된다.
하지만 이 문제에서 조심해야 할 부분은 총 M개의 노드만 방문할수 있다는 점이다.
위의 조건만으로 이동하게 되면 M개의 노드를 모두 방문했는데 노드 N 에 도착하지 못할수도 있다.
따라서 이 문제는 d[] 가 아닌 d[i][j] 2차원 배열을 만들어야 한다.
d[i][j] : 노드 i 에 j 번째로 도착했을때 먹을수 있는 최대 기내식.
다음 노드 이동은 d[nextNode][depth+1] < d[curNode][depth] + nextDist 를 만족할때만 이동하면 된다.
'PS' 카테고리의 다른 글
백준 5569. 출근 경로 (0) | 2023.09.09 |
---|---|
백준 2015. 수들의 합 4 (0) | 2023.09.08 |
백준 13335. 트럭 (0) | 2023.09.07 |
백준 14395. 4연산 (0) | 2023.09.05 |
백준 2643. 색종이 올려놓기 (0) | 2023.09.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- db
- Implementation
- CSS
- Kruskal
- Spring
- back tracking
- Python
- Tree
- 재귀
- 조합
- greedy
- priority queue
- floyd warshall
- permutation
- C++
- 자료구조
- Dijkstra
- binary search
- recursion
- DP
- graph
- BFS
- Unity
- two pointer
- C
- Brute Force
- MVC
- 이분탐색
- dfs
- Stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함