Pagini recente » Cod sursa (job #2782357) | Cod sursa (job #1941107) | Cod sursa (job #2083062) | Cod sursa (job #1483958) | Cod sursa (job #3210726)
#include <bits/stdc++.h>
using namespace std;
const int NMAX=50001,inf=(1<<30);
struct nods
{
int dest,cost;
};
int d[NMAX],n,m;
bool incodi[NMAX];
vector <nods> vec[NMAX];
struct comp
{
bool operator()(int x, int y)
{
return d[x] > d[y];
}
};
priority_queue <int,vector<int>,comp> codi;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
void citire()
{
f>>n>>m;
nods y;
int x;
for(int i=1;i<=m;i++)
{
f>>x;
f>>y.dest>>y.cost;
vec[x].push_back(y);
}
}
void dijkstra()
{
for(int i = 1; i <= n; i++)
d[i] = inf;
d[1]=0;
codi.push(1);
incodi[1]=1;
while(!codi.empty())
{
int curent=codi.top();
codi.pop();
incodi[curent]=0;
for(auto i:vec[curent])
{
int vecin=i.dest,cst=i.cost;
if(d[curent]+cst<d[vecin])
{
d[vecin]=d[curent]+cst;
if(incodi[vecin]==0)
{
codi.push(vecin);
incodi[vecin]=1;
}
}
}
}
}
int main()
{
citire();
dijkstra();
for(int i=2;i<=n;i++)
g<<d[i]<<' ';
return 0;
}