Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int main(){
- long long n, m, dist, v;
- cin >> n >> m;
- vector<pair<long long, long long>> G[n + 1];
- vector<long long> odl(n + 1, LLONG_MAX);
- for(long long i = 0, a, b, c;i < m;i++){
- cin >> a >> b >> c;
- G[b].emplace_back(a, c);
- }
- priority_queue<pair<long long, long long>> q;
- q.emplace(0, 1);
- while(!q.empty()){
- tie(dist, v) = q.top();
- q.pop();
- if(-dist > odl[v])
- continue;
- odl[v] = -dist;
- for(auto i : G[v])
- q.emplace(dist - i.second, i.first);
- }
- for(int i = 1;i <= n;i++){
- if(odl[i] == LLONG_MAX)
- cout << "+oo\n";
- else
- cout << odl[i] << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement