Cod sursa(job #3321179)

Utilizator Andreea1501013Andreea Andreea1501013 Data 8 noiembrie 2025 14:30:25
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
#include<queue>
#include<vector>
#define y first
#define c second
using namespace std;

int N,M, djk[50005];
vector<pair<int,int>> arce[250005];
void Dijkstra()
{
    priority_queue<pair<int,int>> pq;
    pq.push({1,0});
    while(pq.empty()==0)
    {
        pair<int,int> nod;
        nod = pq.top();
        pq.pop();
        if(nod.c != djk[nod.y])
        {
            continue;
        }
        for(size_t i=0; i < arce[nod.y].size(); i++)
        {
            ///ma duc prin vecini
            if(djk[arce[nod.y][i].y] ==0 || djk[arce[nod.y][i].y] > nod.c+ arce[nod.y][i].c)
            {
                djk[arce[nod.y][i].y]=nod.c+ arce[nod.y][i].c;
                pq.push({arce[nod.y][i].y, djk[arce[nod.y][i].y]});
            }
        }

    }
}

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

    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin>>N>>M;
    int x,z,t;
    for(int i=1; i<=M; i++)
    {
        cin>>x>>z>>t;
        arce[x].push_back({z,t});
    }
    Dijkstra();
    for(int i=2; i<=N; i++)
    {
        cout<<djk[i]<<' ';
    }
    return 0;
}