Problem Solving/BOJ [백준 1261번] [Dijkstra] 알고스팟 - 728x90 반응형 Approach 정점에 cost가 있는 상황이므로, 위 문제와 거의 유사하다. https://viyoung.tistory.com/370 [백준 4485번] [Dijkstra] 녹색 옷 입은 애가 젤다지? Approach 전형적인 다익스트라 문제이다. DFS / BFS 문제처럼 상하좌우 방문해주면서 dist를 갱신해주면 된다. Code #include #define fastio cin.tie(0)->sync_with_stdio(0) using namespace std; typedef pair.. viyoung.tistory.com Code #include <bits/stdc++.h> #define fastio cin.tie(0)->sync_with_stdio(0) using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef tuple<int, int, int> tiii; int move_x[4] = {-1, 1, 0, 0}; int move_y[4] = {0, 0, -1, 1}; const int INF = 20000; int main() { fastio; int n, m; cin >> m >> n; int r[100][100]; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ char t; cin >> t; r[i][j] = t - '0'; } } int dist[100][100]; fill(&dist[0][0], &dist[99][100], INF); dist[0][0] = 0; priority_queue<tiii, vector<tiii>, greater<tiii> > pq; pq.push({0, 0, 0}); while(!pq.empty()){ int cur_cost, cur_x, cur_y; tie(cur_cost, cur_x, cur_y) = pq.top(); pq.pop(); if(dist[cur_x][cur_y] < cur_cost) continue; for(int i = 0; i < 4; i++){ int dx = cur_x + move_x[i]; int dy = cur_y + move_y[i]; if(dx < 0 || dx >= n || dy < 0 || dy >= m) continue; if(cur_cost + r[dx][dy] < dist[dx][dy]){ dist[dx][dy] = cur_cost + r[dx][dy]; pq.push({dist[dx][dy], dx, dy}); } } } cout << dist[n - 1][m - 1] << "\n"; return 0; } 반응형 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기비룡의 컴퓨터이야기 Contents Approach Code 당신이 좋아할만한 콘텐츠 [백준 2211번] [Dijkstra] 네트워크 복구 2022.01.12 [백준 10473번] [Dijkstra] 인간 대포 2022.01.12 [백준 1238번] [Dijkstra] 파티 2022.01.12 [백준 4485번] [Dijkstra] 녹색 옷 입은 애가 젤다지? 2022.01.12 댓글 0 + 이전 댓글 더보기