Pagini recente » Cod sursa (job #147567) | Cod sursa (job #690743) | Cod sursa (job #2193376) | Cod sursa (job #1773128) | Cod sursa (job #1170853)
#include<fstream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
struct coord
{
int cost,nod;
};
struct coada
{
int varf,relax;
bool operator < (const coada& e) const
{
return relax > e.relax;
}
};
vector <coord> v[50005];
int n,m,d[50005];
priority_queue<coada>q;
const int oo=1<<30;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
inline void Citire()
{
int i,x;
coord y;
fin>>n>>m;
for (i=1;i<=m;i++)
{
fin>>x>>y.nod>>y.cost;
v[x].push_back(y);
}
}
inline void DIJKSTRA()
{
int i,k,len,x;
coada kl;
d[1]=0;
for (i=2;i<=n;i++)
d[i]=oo;
k=1;x=1;
kl.varf=1;
kl.relax=0;
q.push(kl);
while (k<n)
{
len=v[x].size();
for (i=0;i<len;i++)
if (d[v[x][i].nod]>d[x]+v[x][i].cost)
{
d[v[x][i].nod]=d[x]+v[x][i].cost;
kl.varf=v[x][i].nod;
kl.relax=d[v[x][i].nod];
q.push(kl);
}
q.pop();
x=q.top().varf;k++;
}
}
inline void Afisare()
{
int i;
for (i=2;i<=n;i++)
fout<<d[i]<<" ";
fout<<"\n";
}
int main()
{
Citire();
DIJKSTRA();
Afisare();
return 0;
}