Cod sursa(job #2714405)

Utilizator PulpysimusJurjiu Tandrau Darius Stefan Pulpysimus Data 1 martie 2021 19:36:41
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
#define INF 2000000000
typedef pair <int, int> p;
int n,m,dist[50001],start;
bool viz[50001];
priority_queue  <p, vector<p>, greater<p> > Q;
vector <p> G[50001];
void read()
{int a,b,c,i;
f>>n>>start;

    while(f>>a>>b>>c)
    G[a].push_back({c,b});
}

void init()
{
    for(int i=1;i<=n;i++)
        dist[i]=INF;
        dist[start]=0;
}
void Dijkstra()
{
    int vert;
    Q.push(make_pair(0,start));
    while(!Q.empty())
    {
        vert=Q.top().second;
        if(!viz[vert]){
        for(auto x: G[vert])
        {
            if(dist[x.second]>dist[vert]+x.first)
            {
                dist[x.second]=dist[vert]+x.first;
                Q.push({x.first,x.second});
            }
        }}
        viz[vert]=1;
        Q.pop();
    }
}
int main()
{
    read();
    start=1;
    init();
    Dijkstra();
    int i;
    for(i=2;i<=n;i++)
      if(dist[i]!=INF)  g<<dist[i]<<" ";
    else g<<0<<" ";
}