Cod sursa(job #2868626)

Utilizator andreimocianAndrei Mocian andreimocian Data 11 martie 2022 08:37:59
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,m;
vector <pair <int, int>> v[100005];
struct el
{
    int nod ;
    int cost;
    bool operator < (const el &A)const
    {
        return cost>A.cost;
    }
};
priority_queue <el> Q;
int val[100005];
int viz[100005];
void Dijkstra()
{
    Q.push({1, 0});
    while(!Q.empty())
    {

        int nod=Q.top().nod;
        int cost=Q.top().cost;

        for(int x=0; x<v[nod].size(); ++x)
        {
            int nn=v[nod][x].first;
            if(val[nn]>cost+v[nod][x].second)
            {

                val[nn]=cost+v[nod][x].second;
                Q.push({nn, val[nn]});
            }
        }
        Q.pop();

    }
}

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

    }
    val[1]=0;
    for(int i=2; i<=n ; ++i)
        val[i]=99999999;
    viz[1]=1;
    Dijkstra();
    for(int i=2; i<=n; ++i)
        if(val[i]!=99999999)
            g<<val[i]<<" ";
        else
            g<<0<<" ";


    return 0;
}