Pagini recente » Cod sursa (job #1457048) | Cod sursa (job #926323) | Cod sursa (job #40261) | Cod sursa (job #2364993) | Cod sursa (job #2906554)
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
#define nod second
#define cost first
#define oo (int)2e9+4
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
vector < pair<int, int> > g[50003];
bitset <50003> viz;
int d[50003];
priority_queue < pair<int, int> > q;
int n, m, st;
void citire()
{
int x, y, c;
fin>>n>>m;
st=1;
for (int i=1; i<=m; ++i)
{
fin>>x>>y>>c;
g[x].push_back({c, y});
//g[y].push_back({c, x});
}
fin.close();
}
void dijkstra()
{
for (int i=1; i<=n; ++i) d[i]=oo;
d[st]=0;
q.push({0, st});
while (!q.empty())
{
int u=q.top().nod;
q.pop();
if (viz[u]==0)
{
viz[u]=1;
for (auto v:g[u])
if (d[v.nod]>d[u]+v.cost)
{
d[v.nod]=d[u]+v.cost;
q.push({-d[v.nod], v.nod});
}
}
}
}
int main()
{
citire();
dijkstra();
for (int i=2; i<=n; ++i) fout<<d[i]<<' ';
return 0;
}