Cod sursa(job #3333111)

Utilizator alex_codeTrifanescu Alexandru alex_code Data 11 ianuarie 2026 10:12:06
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

int n, m, p, dis[100001];
bool inCoada[100001]={false};
vector<pair<int, int>>v[100001];
priority_queue< pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>> >pq;
const int INF=1e9;
int main(){

    int i, e, s, cont=0, loc, a, b, c, d, u;
    f >> n >> m;
    for(i=1; i<=m; ++i){
        f >> a >> b >> c;
        v[a].push_back({b, c});
        v[b].push_back({a, c});
    }

    dis[1]=0;
    for(i=2; i<=n; ++i)
        dis[i]=INF;

    pq.push({0, 1});

    while(!pq.empty()){
        d=pq.top().first;
        u=pq.top().second;

        pq.pop();
        if(d>dis[u])continue;

        for(const auto vecin:v[u]){
            int nod_v=vecin.first;
            int cost_v=vecin.second;

            if(dis[u]+cost_v < dis[nod_v]){
                dis[nod_v]=dis[u]+cost_v;
                pq.push({dis[nod_v], nod_v});
            }
        }

    }

    for(i=2; i<=n; ++i)
        if(dis[i]!=INF)g << dis[i] << " ";

    return 0;
}