Cod sursa(job #2363640)

Utilizator Razvan85Secure Razvan Razvan85 Data 3 martie 2019 14:21:33
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector < pair <int,int> > v[50001];
int a,b,c,n,d[50001],viz[50001],m;
struct cmp
{
  bool operator() (int x,int y) {return (d[x]>d[y]);};
};
priority_queue <int,vector <int>,cmp> q;
void dijkstra(int x)
{
    int vecin,cost,nod;
    for(int i=1;i<=n;i++)
        d[i]=1100000000;
    d[x]=0;
    q.push(x);
    while(!q.empty())
    {
     nod=q.top();
     q.pop();
     //viz[nod]=0;
     for(int i=0;i<v[nod].size();i++)
    {
        vecin=v[nod][i].first;
        cost=v[nod][i].second;
        if(cost+d[nod]<d[vecin])
          {d[vecin]=cost+d[nod];
        if(viz[vecin]==0)
        {
            viz[vecin]=1;
            q.push(vecin);
        }
          }
    }
    }
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        f>>a>>b>>c;
        v[a].push_back({b,c});
    }
    dijkstra(1);
    for(int i=2;i<=n;i++)
        if(d[i]!=1100000000)
        g<<d[i]<<" ";
        else
        g<<0<<" ";
    return 0;
}