Cod sursa(job #3256219)

Utilizator yolomodDamian Alexandru yolomod Data 13 noiembrie 2024 20:28:22
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
#define nmax 50005
#define INF 1000000000
typedef long long ll;
ll n, m, s, t;
vector<ll> dist(nmax, INF), parent(nmax, -1);
vector<pair<ll, ll>> graph[nmax];
void dijkstra(ll start)
{
    dist[start] = 0;
    priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>> pq;
    pq.push({0, start});
    while(!pq.empty())
    {
        ll u = pq.top().second;
        pq.pop();
        for(auto i: graph[u])
        {
            ll v = i.first;
            ll cost = i.second;
            if(dist[v] > dist[u] + cost)
            {
                dist[v] = dist[u] + cost;
                pq.push({dist[v], v});
            }
        }
    }

}
int main()
{
    in>>n>>m;
    for(ll i=0; i<m; i++)
    {
        ll x, y, cost;
        in>>x>>y>>cost;
        graph[x].push_back({y, cost});
    }
    dijkstra(1);

    for(ll i=2; i<=n; i++)
    {
        out<<dist[i]<<" ";
    }

}