Cod sursa(job #2541108)

Utilizator aser.cobaschiCobaschi Aser aser.cobaschi Data 8 februarie 2020 09:38:48
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int N = 50010;
const int oo = 1000000010;
int n,m,d[N];
vector<pair<int,int>> v[N];
priority_queue<pair<int,int>> pq;
bitset<N> viz;
int main()
{
    f>>n>>m;
    for(; m; m--)
    {
        int x,y,c;
        f>>x>>y>>c;
        v[x].push_back(make_pair(x,c));

    }
    fill(d+1,d+n+1,oo);
    d[1]=0;
    pq.push(make_pair(0,1));
    while(pq.size())
    {
        int dist,nod;
        tie(dist,nod)=pq.top();
        pq.pop();
        if(!viz[nod])
        {
            viz[nod]=1;
            dist=-dist;
            for(auto it:v[nod])
            {
                int vec,distv;
                tie(vec,distv)=it;
                if(!viz[vec])
                    if(d[vec]>dist+distv)
                    {
                        d[vec]=dist+distv;
                        pq.push(make_pair(-d[vec],vec));
                    }
            }
        }
    }
    for(int i=2; i<=n; i++)
    {
        if(d[i]==oo)
            d[i]=0;
        g<<d[i]<<' ';
    }
    return 0;
}