Cod sursa(job #2714419)

Utilizator PulpysimusJurjiu Tandrau Darius Stefan Pulpysimus Data 1 martie 2021 19:49:50
Problema Algoritmul lui Dijkstra Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 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[50005],start;
bool viz[50005];
priority_queue  <p, vector<p>, greater<p> > Q;
vector <p> G[50005];
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,cost;
    Q.push(make_pair(0,start));
    while(!Q.empty())
    {
vert=Q.top().second;
if(viz[vert]==0)
{
    viz[vert]=1;
    for(auto x:G[vert])
    {
        if(dist[vert]+x.first<dist[x.second])
        {
            Q.push({dist[vert]+x.first,x.second});
            dist[x.second]=dist[vert]+x.first;
        }
    }
}
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<<" ";
}