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