Pagini recente » Cod sursa (job #3262274) | Cod sursa (job #2135892) | Cod sursa (job #191437) | Cod sursa (job #8633) | Cod sursa (job #2830807)
#include <bits/stdc++.h>
#define oo 2000000003
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct drum
{
long long cost, nod;
bool operator<(const drum A) const
{
return cost < A.cost;
}
};
int n, m;
vector<drum> h[50003];
priority_queue<drum> q;
int viz[50003];
long long d[50003];
void Citire()
{
int i, x, y, c;
fin >> n >> m;
for(i = 1;i <= m;i++)
{
fin >> x >> y >> c;
h[x].push_back({c, y});
}
}
void Dijkstra(int P)
{
int i, k, c;
for(i = 1;i <= n;i++)
d[i] = oo;
q.push({ 0, P });
d[P] = 0;
while(!q.empty())
{
k = q.top().nod;
q.pop();
if(viz[k] == 0)
{
viz[k] = 1;
for(auto w : h[k])
{
i = w.nod;
c = w.cost;
if(d[i] > d[k] + c)
{
d[i] = d[k] + c;
q.push({ -d[i], i});
}
}
}
}
}
int main()
{
Citire();
Dijkstra(1);
for(int i = 2;i <= n;i++)
if(d[i] != oo) fout << d[i] << " ";
else fout << "0 ";
fout.close();
return 0;
}