Pagini recente » Cod sursa (job #1643489) | Cod sursa (job #992269) | Cod sursa (job #395317) | Cod sursa (job #1463220) | Cod sursa (job #2555833)
#include <bits/stdc++.h>
#define NMAX 50001
#define INF 0x3F3F3F3F
using namespace std;
class cmp {
public:
bool operator () (const pair <int, int> &a, const pair <int, int> &b) {
return a.second>b.second;
}
};
vector <pair <int, int>> G[NMAX];
priority_queue <pair <int, int>, vector <pair <int, int>>, cmp> PQ;
array <int, NMAX> dist;
int main (void) {
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int n, m, i, j, c;
fin >> n >> m;
for (; m; m--) {
fin >> i >> j >> c;
G[i].push_back(make_pair(j, c));
}
dist.fill(INF);
dist[1]=0;
PQ.push(make_pair(1, 0));
while (!PQ.empty()) {
auto save=PQ.top();
PQ.pop();
if (dist[save.first]==save.second)
for (auto it: G[save.first])
if (dist[it.first]>save.second+it.second) {
dist[it.first]=save.second+it.second;
PQ.push(make_pair(it.first, dist[it.first]));
}
}
for (i=2; i<=n; i++) {
if (dist[i]==INF)
dist[i]=-1;
fout << dist[i] << ' ';
}
return 0;
}