Cod sursa(job #2870889)

Utilizator andrei_123Predescu Andrei andrei_123 Data 12 martie 2022 17:22:53
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fcin("dijkstra.in");
ofstream fcout("dijkstra.out");

const int Nmax=105;
const int oo=(1<<30);

int N,m,p,x,y,c;
int D[Nmax];

using PI = pair< int, int>;
vector < PI > G[Nmax];


priority_queue<PI, vector < PI >, greater < PI > >coada;

void dijkstra(int k)
{
    D[k]=0;
    coada.push({0,k});
    while(!coada.empty())
    {
        int NodCurent=coada.top().second;
        coada.pop();
        for(auto i:G[NodCurent])
        {
            int Vecin=i.first;
            int Cost=i.second;
            if(D[NodCurent] + Cost < D[Vecin])
            {
                D[Vecin]=D[NodCurent] + Cost;
                coada.push({D[Vecin],Vecin});

            }
        }
    }
}
int main()
{
    fcin>>N>>m;
    for(int i=1; i<=m; i++)
    {
        fcin>>x>>y>>c;
        G[x].push_back(make_pair(y,c));
    }
    for(int i=1; i<=N; i++)
        D[i]=oo;
    dijkstra(1);
    for(int i=2; i<=N; i++)
        if(D[i]==oo)
            fcout<<0<<" ";
        else
            fcout<<D[i]<<" ";
}