-택배 배송(5972, 백준)
간단한 다익 문제이다. 입력받은뒤 1번에서부터 n번노드까지 다익을 돌리면 된다.
<소스 코드>
더보기
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
int n, m;
vector <pair<int, int>> vec[50010];
int dis[50010];
void Dijkstra(int s)
{
priority_queue <pair<int, int>> pq;
pq.push({ 0, s });
dis[s] = 0;
while (!pq.empty()) {
int nidx = pq.top().second, nval = -pq.top().first;
pq.pop();
if (dis[nidx] < nval) continue;
for (int i = 0; i < vec[nidx].size(); i++) {
int idx = vec[nidx][i].first, val = nval + vec[nidx][i].second;
if (dis[idx] > val) {
dis[idx] = val;
pq.push({ -val, idx });
}
}
}
}
int main()
{
int i, j;
scanf("%d %d", &n, &m);
for (i = 1; i <= n; i++) dis[i] = 2e9;
for (i = 0; i < m; i++) {
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
vec[x].push_back({ y, z });
vec[y].push_back({ x, z });
}
Dijkstra(1);
printf("%d", dis[n]);
return 0;
}
'PS(알고리즘 문제풀이) 관련 글 > PS일지' 카테고리의 다른 글
2024-03-21 (0) | 2024.03.21 |
---|---|
2024-03-20 (0) | 2024.03.20 |
2024-03-18 (0) | 2024.03.18 |
2024-03-17 (1) | 2024.03.17 |
2024-03-16 (0) | 2024.03.16 |