Cod sursa(job #2678910)

Utilizator DeliaGhergheGherghe Ioana-Delia DeliaGherghe Data 29 noiembrie 2020 00:05:06
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.4 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;
vector <pair <int, int> > adj[50001];
int N, M, k, t[50001], d[50001], viz[50001], inf = 2e9;
priority_queue <pair <int, int> > pq;

int main()
{
    ifstream fin("dijkstra.in");
    ofstream fout("dijkstra.out");

    fin >> N >> M;
    int x, y, c, s, inf = 0;

    for (int i = 1; i <= M; i++)
    {
        fin >> x >> y >> c;
        adj[x].push_back({y, c});
        //adj[y].push_back({x, c});
    }

    //cin >> s;

    for (int i = 1; i <= N; i++)
    {
        d[i] = inf;
    }

    d[1] = 0;
    pq.push({0, 1});


    while (!pq.empty())
    {
        int curr = pq.top().second;
        pq.pop();

        if (viz[curr] == 0)
        {
            for (int i = 0; i < adj[curr].size(); i++)
            {
                int next = adj[curr][i].first;
                int cost = adj[curr][i].second;

                if (d[curr] + cost < d[next])
                {
                    d[next] = d[curr] + cost;
                    pq.push({-d[next], next});
                    //t[next] = curr;
                }
            }
            viz[curr] = 1;
        }
    }

    for (int i = 2; i <= N; i++)
    {
        if (d[i] != inf)
            fout << d[i] << " ";
        else
            fout << 0 << " ";
    }


    fin.close();

    return 0;
}