Cod sursa(job #3272563)

Utilizator Mocanu_Tudor_CristianMocanu Tudor Cristian Mocanu_Tudor_Cristian Data 29 ianuarie 2025 20:39:00
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>
#include <vector>
#include <set>
#include <fstream>

using namespace std;

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

vector<pair<int, int>> G[50001];

set<pair<int, int>> pq;

int INF = 9999999;
int d[50001], viz[50001];

int main()
{

    int n, m, x, y, c;
    fin >> n >> m;
    for (int i = 1; i <= m; i++) {
        fin >> x >> y >> c;
        G[x].push_back(make_pair(c, y));
    }

    for (int i = 1; i <= n; i++)
        d[i] = INF;
    d[1] = 0;
    pq.insert(make_pair(0, 1));
    while(!pq.empty())
    {
        int nod = (*pq.begin()).second;
        pq.erase(pq.begin());
        if(viz[nod] == 1)
            continue;
        viz[nod] = 1;
        for(int i = 0; i < G[nod].size(); i++)
        {
            pair<int, int> vecin = G[nod][i];
            if(viz[vecin.second] == 0)
            {
                if(d[vecin.second] > d[nod] + vecin.first)
                {
                    d[vecin.second] = d[nod] + vecin.first;
                    pq.insert(make_pair(d[vecin.second], vecin.second));
                }
            }
        }
    }
    for(int i = 2; i <= n; i++)
    {
        if(d[i] == INF)
            fout << "0 ";
        else fout << d[i] << " ";
    }

    return 0;
}