Cod sursa(job #2574933)

Utilizator GabyD002Dobrita Gabriel GabyD002 Data 6 martie 2020 10:46:00
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>
#define pii pair <int,int>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

int n,m,cost[1<<16];
bool inHeap[1<<16];

struct cmp
{   bool operator()(int x,int y)
    { return cost[x]>cost[y]; }
};

vector <pii> v[1<<16];
priority_queue <int,vector<int>,cmp> heap;

int main()
{   f>>n>>m;
    for(int x,y,c; f>>x>>y>>c; v[x].push_back(make_pair(y,c)));
    heap.push(1);
    for(int i=2; i<=n; i++)
        cost[i]=1<<30;
    for(; !heap.empty(); heap.pop())
    {   int nod=heap.top();
        inHeap[nod]=0;
        vector <pii> :: iterator it;
        for(it=v[nod].begin(); it!=v[nod].end(); it++)
            if(cost[nod]+it->second<cost[it->first])
            {   cost[it->first]=cost[nod]+it->second;
                if(!inHeap[it->first])
                {   inHeap[it->first]=1;
                    heap.push(it->first);
                }
            }
    }
    for(int i=2; i<=n; i++)
        g<<(cost[i]==1<<30 ? 0 : cost[i])<<' ';
    g.close(); return 0;
}