Cod sursa(job #2619195)

Utilizator pro119Manea Dumitru pro119 Data 27 mai 2020 11:25:46
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;

const int mxN=50001;
int n,m,a,b,c;
vector < pair<int,int> > g[mxN];
int dist[mxN];

void dijkstra (int start){
    queue <int> q;
    q.push(start);
    while(!q.empty()){
        int em=q.front();
        q.pop();
        for (int i=0; i<g[em].size(); i++){
            int node = g[em][i].first;
            int len = g[em][i].second;
            if (dist[em]+len<dist[node] || dist[node]==0){
                dist[node]=dist[em]+len;
                q.push(node);
            }
        }
    }

}

int main()
{
    ifstream cin("dijkstra.in");
    ofstream cout("dijkstra.out");
    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for (int i=0; i<n; i++){
        cin>>a>>b>>c;
        g[a].push_back({b,c});
    }


    dijkstra(1);

    for (int i=2; i<=n; i++){
        cout<<dist[i]<<" ";
    }
    return 0;
}