Cod sursa(job #3337812)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 30 ianuarie 2026 09:41:21
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 50002
#define INF (1<<30)
using namespace std;
ifstream  fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m;
vector<int> cost(NMAX,INF),viz(NMAX,0);
vector<pair<int,int>>graph[NMAX];
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;


void citire()
{
    fin>>n>>m;

    int u,v,c;
    for(int i=1; i<=m; i++)
    {
        fin>>u>>v>>c;
        graph[u].push_back({v,c});
    }
}

int main()
{
    citire();

    cost[1]=0;
    q.push({0,1});

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

        if(!viz[nod])
        {
            viz[nod]=1;
            for(int i=0; i<graph[nod].size(); i++)
            {
                int next_nod=graph[nod][i].first;

                if(dist+graph[nod][i].second<cost[next_nod])
                {
                    cost[next_nod]=dist+graph[nod][i].second;
                    q.push({cost[next_nod],next_nod});
                }
            }
        }
    }

    for(int i=2; i<=n; i++)
    {
        if(cost[i]==INF)
        {
            cost[i]=0;
        }
        fout<< cost[i] << " ";
    }
    fout<< "\n";

    return 0;
}