Cod sursa(job #2455081)

Utilizator teodorgTeodor G teodorg Data 10 septembrie 2019 18:56:40
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int oo = 1000000010;
const int N = 50010;
int n,m,s,d[N];
vector<pair<int,int>> v[N];
priority_queue<pair<int,int>> pq;
bitset<N> viz;
int main()
{
    f>>n>>m>>s;
    for(; m; m--)
    {
        int x,y,z;
        f>>x>>y>>z;
        v[x].push_back({y,z});
    }
    for(int i=2;i<=n;i++)
        d[i]=oo;
    pq.push({0,1});
    while(pq.size())
    {
        int nod,costNod;
        tie(costNod,nod)=pq.top();pq.pop();
        costNod=-costNod;
        if(!viz[nod])
        {
            viz[nod]=1;
            for(auto it:v[nod])
            {
                int vec,costMuchie;
                tie(vec,costMuchie)=it;
                if(d[vec]>costNod+costMuchie)
                {
                    d[vec]=costNod+costMuchie;
                    pq.push({-d[vec],vec});
                }
            }
        }
    }
    for(int i=2;i<=n;i++)
    {
        if(!viz[i])
            d[i]=0;
        g<<d[i]<<' ';
    }
    return 0;
}