반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 1916 최소비용 구하기 본문

백준(Baekjoon) 문제

백준 1916 최소비용 구하기

huiung 2019. 2. 18. 22:29
반응형

문제와 채점은 위 사이트에서 확인 하실 수 있습니다

 

이 문제는 출발 도시에서 도착 도시까지 걸리는 최소비용을 구하는 문제입니다.

 

따라서 다익스트라 알고리즘을 통하여 구하여야 합니다.  다익스트라 알고리즘이란 우선순위 큐를 사용하여 이동 할 수 있는 정점중 가장 가중치가 적은 경로로 이동하면서 그 정점으로 이동하는데 지금의 비용과 기존에 저장되어 있는 비용중 더작은 비용을 저장하면서 각각의 정점으로 이동하는데의 최소비용을 구하는 알고리즘입니다. 

 

#include <iostream>
#include <vector>
#include <queue>

#define P pair<int,int>
#define inf 100000001
using namespace std;

priority_queue<int , vector<int>, greater<int>> pq;
vector<P> v[1001];
int weight[1001];

void Dijkstra(int start) {
	
	pq.push(start);
	weight[start] = 0; 
	while(!pq.empty()) {
		int num = pq.top();
		pq.pop();
		for(int i = 0; i < v[num].size(); i++) {
			
			if(weight[num] + v[num][i].first < weight[v[num][i].second]) {
				weight[v[num][i].second] = weight[num] + v[num][i].first;
				pq.push(v[num][i].second);
			}
		}
	}
}

int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int N,M;
	cin >> N >> M;
	fill_n(weight, 1001, inf);
	for(int i = 0; i < M; i++) {
		int a,b,c;
		cin >> a >> b >> c;
		v[a].push_back(make_pair(c, b));
	}
	int start, arrive;
	cin >> start >> arrive;
	Dijkstra(start);
	cout<<weight[arrive];
	
	return 0;
}

 

 

반응형

'백준(Baekjoon) 문제' 카테고리의 다른 글

백준 1021회전하는 큐  (0) 2019.02.19
백준 5430 AC  (0) 2019.02.19
백준 16568 엔비스카의 영혼  (0) 2019.02.18
백준 1197 최소스패닝 트리 (프림, 크루스칼)  (0) 2019.02.17
백준 1699 제곱수의 합  (0) 2019.02.15