Cod sursa(job #3328748)

Utilizator anghelmrsmanghel eduard anghelmrsm Data 10 decembrie 2025 01:32:58
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <vector>
#include <queue>
#include <climits>

using namespace std;

ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");

struct edge
{
    int v,w;
};

int n,m,d[50001];
vector <edge> vecin[50001];
class compare
{
public:
    bool operator() (int x, int y)
    {
        return d[x] > d[y];
    }
};

priority_queue <int, vector <int>, compare> q;

void Djikstra (int start)
{
    for (int i=1; i<=n; i++)
        d[i] = INT_MAX;

    d[start] = 0;
    q.push(start);

    while (!q.empty())
    {
        int nod = q.top();
        q.pop();

        for (auto e : vecin[nod])
            if (d[nod] + e.w < d[e.v])
            {
                d[e.v] = d[nod] + e.w;
                q.push(e.v);
            }

    }
}

int main()
{
    cin>>n>>m;
    for (int i=0; i<m; i++)
    {
        int x,y,cost;
        cin>>x>>y>>cost;

        edge e;
        e.v = y;
        e.w = cost;

        vecin[x].push_back(e);
    }
    Djikstra(1);
    for (int i=2; i<=n; i++)
        cout<<d[i]<<" ";
}