Pagini recente » Cod sursa (job #1752619) | Cod sursa (job #2974414) | Cod sursa (job #755414) | Cod sursa (job #2403695) | Cod sursa (job #3285564)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 50003
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
struct q_entry {
int nod;
long long dist;
};
bool operator< (q_entry a, q_entry b)
{
return a.dist > b.dist;
}
vector<q_entry> G[NMAX];
priority_queue<q_entry> q;
int n, m;
bool viz[NMAX];
long long dist[NMAX];
void dijkstra(int start)
{
if (viz[start]) return;
q.push({start, 0});
while (!q.empty())
{
q_entry c = q.top();
q.pop();
if (viz[c.nod]) continue;
viz[c.nod] = true;
dist[c.nod] = c.dist;
for (auto it : G[c.nod])
{
q.push({it.nod, c.dist + it.dist});
}
}
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
int x, y, c;
fin >> x >> y >> c;
G[x].push_back({y, c});
}
dijkstra(1);
for (int i = 2; i <= n; i++)
fout << dist[i] << " ";
return 0;
}