Cod sursa(job #2869409)

Utilizator XyanEusebiu Pusca Xyan Data 11 martie 2022 15:14:31
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int NMAX = 50002;
vector < pair <int, int> > v[NMAX];
set < pair <int, int> > q;
int dist[NMAX], N, M;
int main()
{
    fill_n(dist, NMAX, 1e9);
    dist[1] = 0;
    fin >> N >> M;
    int a, b, c;
    for (int i = 1; i <= M; i++)
    {
        fin >> a >> b >> c;
        v[a].push_back(pair<int, int>(b, c));
    }
    int x;
    for (auto i : v[1]) {
        q.insert( pair <int, int>(i.second, i.first));
    }
    q.insert(pair <int, int>(0, 1));
    while (!q.empty())
    {
        x = q.begin()->second;
        q.erase(q.begin());
        for (auto i : v[x])
        {
            if (dist[x] + i.second < dist[i.first])
            {
                dist[i.first] = dist[x] + i.second;
                q.insert(pair<int, int>(i.second, i.first));
            }
        }
    }
    for (int i = 2; i <= N; i++)
        fout << dist[i] << " ";
    return 0;
}