Cod sursa(job #3003612)

Utilizator RobertlelRobert Robertlel Data 15 martie 2023 20:19:29
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <set>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;

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


int n , m , x , y , c , dist[50005] , viz[50005];

vector <pair <int , int > >v[50005];

void dij (int nod)
{
    queue <int> coada;
    coada.push (nod);
    dist[nod] = 0;
    while (!coada.empty())
    {
        int nod = coada.front();
        coada.pop();
        viz[nod] = 0;
        for (int i = 0 ; i < v[nod].size() ; i++)
        {
            int vecin = v[nod][i].first;
            int cost = v[nod][i].second;
            if (dist[vecin] > dist[nod] + cost)
            {
                dist[vecin] = dist[nod] + cost;
                if (viz[vecin] == 0)
                {
                    viz[vecin] = 1;
                    coada.push (vecin);
                }
            }
        }
    }
}


int main()
{
    f >> n >> m;
    for (int i = 1 ; i <= m ; i++)
    {
        f >> x >> y >> c;
        v[x].push_back ({y , c});
    }
    for (int i = 1 ; i <= n ; i++)
        dist[i] = 2e9;

    dij (1);


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