본문 바로가기
Algorithm 💫/Problem Solving

[백준] 5972번: 택배 배송 / C++

by 돼지고기맛있다 2021. 9. 27.
반응형

✏️ 문제 링크

https://www.acmicpc.net/problem/5972

 

5972번: 택배 배송

농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는

www.acmicpc.net

 

 

✏️ 문제 설명 (더보기 클릭 👆🏻)

 

✏️ 문제 풀이

2021.09.15 - [Algorithm 🧠/알고리듬(thm) 공부 🌱] - [백준] 1916: 최소비용 구하기/ 다익스트라 / C++ ⭐

 

[백준] 1916: 최소비용 구하기/ 다익스트라 / C++ ⭐

✏️ 문제 링크 https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째..

ssinee.tistory.com

 

👆🏻 위의 링크 먼저 이해 후 풀면 쉽게 풀린다 :)

 

✏️ 문제 코드

#include <bits/stdc++.h>

using namespace std;
using pii=pair<int, int>;

#define MAX 50001
#define INF 987654321

vector<pii> vec[MAX];
vector<int> dist(MAX, INF);


void dijkstra(int s){
    priority_queue<pii> pq; pq.push({0, s});
    dist[s]=0;
    
    while(!pq.empty()){
        pii t=pq.top(); pq.pop();
        int cur=t.second; int d=t.first*-1;
        
        if(dist[cur]<d) continue;
        for(int i=0; i<vec[cur].size(); i++){
            int nxt=vec[cur][i].first;
            int nxt_d=vec[cur][i].second+d;
            
            if(nxt_d<dist[nxt]){
                dist[nxt]=nxt_d;
                pq.push({nxt_d*-1, nxt});
            }
        }
    }
}
int main(){
    int N, M; cin>>N>>M;
    
    while(M--){
        int s,e,w; cin>>s>>e>>w;
        vec[s].push_back({e, w});
        vec[e].push_back({s, w});
    }
    
    dijkstra(1);
    
    cout<<dist[N];
    
    return 0;
}

 

 

 

 ⭐ if feedback and question : comment please⭐  

 

 

 

 

 

반응형

댓글