Pagini recente » Cod sursa (job #1863766) | Cod sursa (job #1139503) | Cod sursa (job #528554) | Cod sursa (job #1549802) | Cod sursa (job #2815741)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
const int INF = (1 << 30);
struct arc{
int y, c, cnt;
};
vector<arc>v[50002];
int n, m, x, y, c, d[50002], inq[50002];
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>pq;
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++) {
cin >> x >> y >> c;
v[x].push_back({y, c, 0});
}
for (int i = 2; i <= n; i++)
d[i] = INF;
pq.push({0, 1});
bool ok = 1;
while (!pq.empty() && ok) {
int nod = pq.top().second;
int val = pq.top().first;
pq.pop();
if (d[nod] != val)
continue;
for (auto &it: v[nod]) {
if (d[nod] + it.c < d[it.y]) {
// it.cnt++;
//if (it.cnt >= n) {
//ok = 0;
//break;
//}
d[it.y] = d[nod] + it.c;
pq.push({d[it.y], it.y});
}
}
}
//if (!ok)
//fout << "Ciclu negativ!";
for (int i = 2; i <= n; i++)
if (d[i] != INF)
cout << d[i] << " ";
else
cout << "0 ";
return 0;
}