Cod sursa(job #3296275)

Utilizator FlaviuuuFlaviu Flaviuuu Data 12 mai 2025 11:40:06
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
#define ll int
priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>> pq;
vector<vector<pair<ll, ll>>> a(50005);
vector<ll> dmin(50005, 1e9);
int main()
{
    ll n, m, x, y, z;
    cin>>n>>m;
    pq.push({0, 1});
    dmin[1] = 0;
    for(int i = 1; i <= m; i++)
    {
        cin>>x>>y>>z;
        a[x].push_back({y, z});
    }
    while(!pq.empty())
    {
        if(pq.top().first < dmin[pq.top().second])
            {pq.pop(); continue;}
        pair<int, int> x = pq.top();
        pq.pop();
        for(int i = 0; i < a[x.second].size(); i++)
            if(dmin[a[x.second][i].first] > x.first + a[x.second][i].second)
                dmin[a[x.second][i].first] = x.first + a[x.second][i].second, pq.push({dmin[a[x.second][i].first], a[x.second][i].first});
    }
    for(int i = 2; i <= n; i++)
    {
        if(dmin[i] == 1e9)
            cout<<"0"<<" ";
        else
            cout<<dmin[i]<<" ";
    }
    return 0;
}