Pagini recente » Cod sursa (job #450644) | Cod sursa (job #621996) | Cod sursa (job #486410) | Cod sursa (job #309484) | Cod sursa (job #2678911)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector <pair <int, int> > adj[50001];
int N, M, k, t[50001], d[50001], viz[50001], inf = 2e9;
priority_queue <pair <int, int> > pq;
int main()
{
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
fin >> N >> M;
int x, y, c, s;
for (int i = 1; i <= M; i++)
{
fin >> x >> y >> c;
adj[x].push_back({y, c});
//adj[y].push_back({x, c});
}
//cin >> s;
for (int i = 1; i <= N; i++)
{
d[i] = inf;
}
d[1] = 0;
pq.push({0, 1});
while (!pq.empty())
{
int curr = pq.top().second;
pq.pop();
if (viz[curr] == 0)
{
for (int i = 0; i < adj[curr].size(); i++)
{
int next = adj[curr][i].first;
int cost = adj[curr][i].second;
if (d[curr] + cost < d[next])
{
d[next] = d[curr] + cost;
pq.push({-d[next], next});
//t[next] = curr;
}
}
viz[curr] = 1;
}
}
for (int i = 2; i <= N; i++)
{
if (d[i] != inf)
fout << d[i] << " ";
else
fout << 0 << " ";
}
fin.close();
return 0;
}