Pagini recente » Cod sursa (job #2511243) | Cod sursa (job #361312) | Cod sursa (job #141657) | Cod sursa (job #2088639) | Cod sursa (job #2862661)
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
using ll = long long;
const string myf = "dijkstra";
ifstream fin(myf + ".in");
ofstream fout(myf + ".out");
int n, m;
int d[50005];
bitset<50005> viz;
vector<pair<int, int> > g[50005];
priority_queue <pair<int , int > > q;
void dijkstra() {
for (int i = 2; i <= n; ++i)
d[i] = 2e9;
q.push({0 , 1});
while (!q.empty()) {
int nod = q.top().second;
q.pop();
if (!viz[nod]) {
viz[nod] = 1;
for (auto i : g[nod]) {
if (d[nod] + i.first < d[i.second]) {
d[i.second] = d[nod] + i.first;
q.push({ -d[i.second], i.second});
}
}
}
}
}
int main() {
int x, y, w;
fin >> n >> m;
while (m--) {
fin >> x >> y >> w;
g[x].pb(mp(w, y));
}
dijkstra();
for (int i = 2; i <= n; ++i) {
if (d[i] != 2e9)
fout << d[i] << " ";
else fout << "0 ";
}
fin.close();
fout.close();
return 0;
}