Problem Solving/BOJ [백준 1162번] [Dijkstra / DP] 도로포장 - 728x90 반응형 Approach 위 문제와 유사하다. https://viyoung.tistory.com/335 [백준 14442번] [BFS] 벽 부수고 이동하기 2 Approach https://viyoung.tistory.com/334 [백준 2206번] [BFS] 벽 부수고 이동하기 Approach 표면적으로 보면 BFS 대표 유형과 유사해보인다. 다만, 일반적인 문제와 달리 1칸 벽을 뚫을 수 있다는 측면을 추가.. viyoung.tistory.com 위 문제와 상황자체는 완벽히 유사하나, 그래프에서 가중치가 존재하기 때문에 BFS가 아닌 다익스트라로 해결해주면 되는 것이다. Code #include <bits/stdc++.h> #define fastio cin.tie(0)->sync_with_stdio(0) using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pii; typedef pair<int, ll> pill; typedef pair<ll, int> plli; typedef tuple<ll, int, int> T; typedef vector <ull> ullv1; typedef vector <vector <ull> > ullv2; const ll INF = 50000000001; int main() { fastio; int n, m, k; cin >> n >> m >> k; vector<pill> edge[n]; for(int i = 0; i < m; i++){ int a, b; ll c; cin >> a >> b >> c; edge[a - 1].push_back({b - 1 , c}); edge[b - 1].push_back({a - 1 , c}); } ll dist[10000][21]; bool visited[10000][21]; fill(&dist[0][0], &dist[9999][21], INF); memset(visited, 0, sizeof(visited)); priority_queue<T, vector<T>, greater<T> > pq; pq.push({0, 0, 0}); dist[0][0] = 0; while(!pq.empty()){ int city = -1; int step = -1; while(!pq.empty()){ if(!visited[get<1>(pq.top())][get<2>(pq.top())]){ city = get<1>(pq.top()); step = get<2>(pq.top()); pq.pop(); break; } pq.pop(); } if(city == -1 && step == -1) break; visited[city][step] = 1; for(auto p : edge[city]){ int to = p.first; ll cost = p.second; if(dist[city][step] + cost < dist[to][step]){ dist[to][step] = dist[city][step] + cost; pq.push({dist[to][step], to, step}); } if(step < k){ if(dist[city][step] < dist[to][step + 1]){ dist[to][step + 1] = dist[city][step]; pq.push({dist[to][step + 1], to, step + 1}); } } } } ll min_num = INF; for(int i = 0; i <= k; i++){ min_num = min(dist[n - 1][i], min_num); } cout << min_num << "\n"; return 0; } 반응형 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기비룡의 컴퓨터이야기 Contents Approach Code 당신이 좋아할만한 콘텐츠 [백준 1854번] [Dijkstra] K번째 최단경로 찾기 2022.01.09 [백준 15422번] [Dijkstra / DP] Bumped! 2022.01.09 [백준 1504번] [Dijkstra] 특정한 최단 경로 2022.01.08 [백준 1916번] [Dijkstra] 최소비용 구하기 2022.01.08 댓글 0 + 이전 댓글 더보기