Cod sursa(job #3361092)

Utilizator medeeavasile56@gmail.comVasile Medeea [email protected] Data 20 iulie 2026 13:25:24
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <vector>
#include <climits>
#include <queue>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
vector<long long> dist;
vector<vector<pair<int,int>>> graph;
priority_queue<pair<int,int>> q;
void dijkstra()
{
    // dist nod
    q.push({0,1}); dist[1]=0;
    while(!q.empty())
    {
        int node=q.top().second, dist_nod=-q.top().first;
        q.pop();
        if(dist_nod>dist[node]) continue;
        for(auto x:graph[node])
        {
            int vec=x.first;
            if(dist[vec]>dist_nod+x.second)
            {
                dist[vec]=dist_nod+x.second;
                q.push({-dist[vec],vec});
            }
        }
    }
}
int main()
{
    int n,m; cin>>n>>m;
    graph.resize(n+1); dist.resize(n+1,INT_MAX);
    for(int i=1;i<=m;i++)
    {
        int x,y,z; cin>>x>>y>>z;
        graph[x].push_back({y,z});
        // node dist
    }
    dijkstra();
    for(int i=2;i<=n;i++ ) {
        if(dist[i]==INT_MAX) cout<<0<<" ";
        else cout<<dist[i]<<" ";
    }    return 0;
}