Cod sursa(job #3197658)

Utilizator eugenioMarinescu Eugenio eugenio Data 27 ianuarie 2024 11:21:59
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <vector>
#include <queue>
#define inf 300001
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");

struct node
{
    int ind;
    int cost;
};

queue<int> q;
vector<node> gf[50005];
int x, y, c, n, m, d[50005];

void bfs()
{
    d[1]=0;
    q.push(1);
    while(!q.empty())
    {
        int nod = q.front();
        q.pop();
        for(auto nodcrt : gf[nod])
        {
            int vecin = nodcrt.ind;
            int cost = nodcrt.cost;
            if(d[vecin] > d[nod] + cost)
            {
                d[vecin] = d[nod] + cost;
                q.push(vecin);
            }
        }
    }
    for(int i=2; i<=n; i++)
    {
        if(d[i]!=inf)
            cout<<d[i]<<' ';
        else
            cout<<0<<' ';
    }
}

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n>>m;
    for(int i=1; i<=m; i++)
    {
        if(i<=n)
            d[i]=inf;
        cin>>x>>y>>c;
        gf[x].push_back({y,c});
    }
    bfs();
    return 0;
}