Cod sursa(job #2535335)

Utilizator redstonegamer22Andrei Ion redstonegamer22 Data 31 ianuarie 2020 19:26:01
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

#define int long long

ifstream in("dijkstra.in");
ofstream out("dijkstra.out");

vector< pair<int, int> > g[50005];
int viz[50005];
priority_queue< pair<int, int> > pq;

int32_t main()
{
    int n, m; in >> n >> m;

    for(int i = 0; i < m; i++) {
        int x, y, c; in >> x >> y >> c;
        g[x].push_back(make_pair(y,c));
        g[y].push_back(make_pair(x,c));
    }

    pq.push(make_pair(0, 1));

    for(int i = 2; i <= n; i++) viz[i] = (1LL<<60);

    while(!pq.empty()) {
        int node = pq.top().second;
        int cost = pq.top().first;
        pq.pop();

        for(int i = 0; i < g[node].size(); i++) {
            if(viz[g[node][i].first] > cost + g[node][i].second) {
                viz[g[node][i].first] = cost + g[node][i].second;

                pq.push(make_pair(viz[g[node][i].first], g[node][i].first));
            }
        }
    }

    for(int i = 2; i <= n; i++) {
        out << viz[i] << " ";
    }
}