블로그 언저리인 무언가
[백준/BOJ] 1916 최소비용 구하기 본문
728x90
문제 : 1916 최소비용 구하기
도시의 개수와 도시들 간에 운행하는 버스의 비용이 주어졌을 때
최소비용으로 이동하는 금액을 출력하는 문제이다.
다익스트라 알고리즘을 이용해서 해결하면 최소비용을 쉽게 구할 수 있다.
Code
#include <bits/stdc++.h>
#define ll long long
#define INF 1e9+7
using namespace std;
struct ABC{
ll idx, dst;
ABC() {}
ABC(ll idx, ll dst): idx(idx), dst(dst) {}
};
bool operator<(ABC x, ABC y){
return x.dst>y.dst;
}
ll N, M, visited[1005];
vector<ABC> arr[1005];
priority_queue<ABC> pq;
ll dijkstra(ll st, ll ed){
fill(&visited[0],&visited[1004],INF);
visited[st]=0;
pq.push({st,0});
while (!pq.empty()){
ll x=pq.top().idx, curr=pq.top().dst;
pq.pop();
if (curr>visited[x])
continue;
for (int i=0;i<arr[x].size();i++){
ll dx=arr[x][i].idx, next=arr[x][i].dst;
if (visited[dx]>curr+next){
visited[dx]=curr+next;
pq.push({dx,curr+next});
}
}
}
return visited[ed];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for (int i=0;i<M;i++){
ll a, b, c;
cin >> a >> b >> c;
arr[a].push_back({b,c});
}
ll st, ed;
cin >> st >> ed;
cout << dijkstra(st,ed);
return 0;
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[백준/BOJ] 3321 가장 큰 직사각형 (0) | 2021.09.18 |
---|---|
[백준/BOJ] 2573 빙산 (0) | 2021.01.08 |
[백준/BOJ] 9375 패션왕 신혜빈 (0) | 2020.12.01 |
[백준/BOJ] 1080 행렬 (0) | 2020.11.29 |
[백준/BOJ] 1074 Z (0) | 2020.11.29 |
Comments