Cod sursa(job #2667053)

Utilizator LorenaMariaHantig Lorena LorenaMaria Data 2 noiembrie 2020 19:56:44
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,m,d[50001];
struct muchie
{ int nod,cost;
};
bool operator <(muchie a,muchie b)
{ return a.cost>b.cost;
}
vector <muchie> v[50001];
priority_queue <muchie> h;
void dijkstra(int nod)
{ h.push({nod,0});
  while(!h.empty())
  { muchie x=h.top();
    h.pop();
    if(d[x.nod]!=1<<30)
       continue;
    d[x.nod]=x.cost;
    for(auto it: v[x.nod])
      if(d[it.nod]>d[x.nod]+it.cost)
         h.push({it.nod,d[x.nod]+it.cost});
  }
}
int main()
{ in>>n>>m;
  for(int i=1;i<=m;i++)
  { int x,y,c;
    in>>x>>y>>c;
    v[x].push_back({y,c});
  }
  for(int i=1;i<=n;i++)
    d[i]=1<<30;
  dijkstra(1);
  for(int i=1;i<=n;i++)
    if(d[i]==1<<30)
       d[i]=0;
  for(int i=2;i<=n;i++)
    out<<d[i]<<" ";
  out<<'\n';
  in.close();
  out.close();
  return 0;
}