Cod sursa(job #2459005)

Utilizator dorupopDoru Pop dorupop Data 22 septembrie 2019 09:13:52
Problema Algoritmul lui Dijkstra Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include<fstream>
#include<vector>
#include<queue>
#define inf 100000001
using namespace std;

ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int,int>>g[50001];
int d[50001],n,m,i,x,y,c,viz[50001];
struct cmp{
 bool operator () (const int &a, const int &b) const{
     return d[a]>d[b];

 }


};
priority_queue<int ,vector<int>, cmp>h;
int main () {
    fin>>n>>m;
    for(i=1;i<=m;i++){
        fin>>x>>y>>c;
        g[x].push_back(make_pair(y,c));

    }
    d[1]=0;
    for(i=2;i<=n;i++)
        d[i]=inf;
    h.push(1)  ;
for(int j=1;j<=n;j++){
    int nod=h.top();
     viz[nod]=1;
     h.pop();
     for(i=0;i<g[nod].size();i++)
         if(viz[g[nod][i].first]==0&&d[g[nod][i].first]>d[nod]+g[nod][i].second){
              d[g[nod][i].first]=d[nod]+g[nod][i].second;
              h.push(g[nod][i].first);
     }



}
for(i=2;i<=n;i++)
    if(d[i]==inf)
        fout<<0<<" ";
  else
      fout<<d[i]<<" ";
     return 0;
}