728x90
반응형
5972번: 택배 배송
문제
https://www.acmicpc.net/problem/5972
5972번: 택배 배송
농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는
www.acmicpc.net
풀이
양방향 그래프에서의 다익스트라 알고리즘을 사용하면 풀 수 있다. 다익스트라 알고리즘에 대해 잘 모른다면 아래 링크를 통해 알아보자.
코드
#include <bits/stdc++.h>
using namespace std;
#define INF 2147483647
int N, M;
vector<pair<int, int>> graph[50001];
vector<int> dist(50001, INF), visited(50001, 0);
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq;
int dijkstra(int s, int e) {
dist[s] = 0;
pq.push({0, s});
while (!pq.empty()) {
int curr;
do {
curr = pq.top().second;
pq.pop();
} while (!pq.empty() && visited[curr]);
if (visited[curr])
break;
visited[curr] = 1;
for (auto &p : graph[curr]) {
int next = p.first, d = p.second;
if (dist[next] > dist[curr] + d) {
dist[next] = dist[curr] + d;
pq.push({dist[next], next});
}
}
}
return dist[e];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> N >> M;
while (M--) {
int u, v, w;
cin >> u >> v >> w;
graph[u].push_back({v, w});
graph[v].push_back({u, w});
}
cout << dijkstra(1, N);
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 2211 네트워크 복구 (0) | 2023.02.20 |
---|---|
[백준 / BOJ] C++ 10282 해킹 (0) | 2023.02.20 |
[백준 / BOJ] C++ 1427 소트인사이드 (0) | 2023.02.19 |
[백준 / BOJ] C++ 1422 숫자의 신 (0) | 2023.02.19 |
[백준 / BOJ] C++ 16496 큰 수 만들기 (0) | 2023.02.19 |