Pagini recente » Cod sursa (job #1469659) | Cod sursa (job #3251134) | Cod sursa (job #1283013) | Cod sursa (job #340889) | Cod sursa (job #3210717)
#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 viz[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 = 0; i <= n; i++)
d[i] = inf;
d[1]=0;
codi.push(1);
while(!codi.empty())
{
int curent=codi.top();
codi.pop();
viz[curent]=1;
for(auto i:vec[curent])
{
if(d[curent]+i.cost<d[i.dest])
d[i.dest]=d[curent]+i.cost;
if(viz[i.dest]==0)
codi.push(i.dest);
}
}
}
int main()
{
citire();
dijkstra();
for(int i=2;i<=n;i++)
g<<d[i]<<' ';
return 0;
}