Pagini recente » Cod sursa (job #1922730) | Cod sursa (job #2431042) | Cod sursa (job #181953) | Cod sursa (job #2220574) | Cod sursa (job #2702094)
#include <fstream>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
#define pair pair<int, int>
#define Inf 1000000001
int n, m;
vector<pair> a[50001];
int d[50001];
pair curent;
void Dijkstra(int x) {
int i;
priority_queue<pair, vector<pair>, greater<pair>> Q;
Q.push({0, x});
d[x] = 0;
pair p;
while (!Q.empty()) {
p = Q.top();
Q.pop();
if (p.first != d[p.second])
continue;
for (i = 0; i < a[p.second].size(); i++) {
curent = a[p.second][i];
if (d[curent.second] > d[p.second] + curent.first) {
d[curent.second] = d[p.second] + curent.first;
Q.push({d[curent.second], curent.second});
}
}
}
}
int main() {
int i, x, c, y;
ifstream f("dijkstra.in");
f >> n >> m;
for (i = 1; i <= m; i++) {
f >> x >> y >> c;
a[x].push_back({c, y});
}
f.close();
for (i = 1; i <= n; i++)
d[i] = Inf;
Dijkstra(1);
ofstream g("dijkstra.out");
for (i = 2; i <= n; i++)
if (d[i] == Inf)
g << 0 << ' ';
else
g << d[i] << ' ';
g.close();
return 0;
}