Pagini recente » Cod sursa (job #1890365) | Cod sursa (job #498489) | Cod sursa (job #2891970) | Cod sursa (job #1515787) | Cod sursa (job #1869986)
#include <bits/stdc++.h>
using namespace std;
struct Nod
{
int nod, cost;
bool operator < (const Nod& e) const
{
return cost > e.cost;
}
};
int N,M,d[50002];
vector<Nod> h[250002];
inline void Citire()
{
int i,x,y,z;
Nod w;
ifstream fin("dijkstra.in");
fin>>N>>M;
for(i=1;i<=M;i++)
{
fin>>x>>y>>z;
w.nod=y;
w.cost=z;
h[x].push_back(w);
}
fin.close();
}
inline void Dijkstra()
{
priority_queue<Nod> q;
Nod w,w1;
int i,c,j,k;
for(i=2;i<=N;i++)
d[i]=1000000000;
d[1]=0;
w.nod=1;
w.cost=0;
q.push(w);
while(!q.empty())
{
w=q.top();
q.pop();
k=w.nod;
for(i=0;i<h[k].size();i++)
{
j=h[k][i].nod;
c=h[k][i].cost;
if(d[j]>d[k]+c)
{
d[j]=d[k]+c;
w1.nod=j;
w1.cost=d[j];
q.push(w1);
}
}
}
}
inline void Afisare()
{
int i;
ofstream fout("dijkstra.out");
for(i=2;i<=N;i++)
if(d[i]<1000000000) fout<<d[i]<<" ";
else fout<<"0 ";
fout.close();
}
int main()
{
Citire();
Dijkstra();
Afisare();
return 0;
}