Pagini recente » Cod sursa (job #1729207) | Cod sursa (job #1869701) | Cod sursa (job #3206494) | Cod sursa (job #41524) | Cod sursa (job #3241924)
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define F first
#define S second
#define endl '\n'
#define all(a) (a).begin(),(a).end()
using namespace std;
const ll maxn = 250005;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
void dijkstra(ll source, const vector<vector<pair<ll, ll>>>& adj, vector<ll>& dist, vector<ll>& prev) {
dist[source] = 0;
set<pair<ll, ll>> q;
q.insert({0, source});
while (!q.empty()) {
ll v = q.begin()->second;
q.erase(q.begin());
for (auto u : adj[v]) {
ll node = u.F;
ll distance = u.S;
if (dist[v] + distance < dist[node]) {
q.erase({dist[node], node});
dist[node] = dist[v] + distance;
prev[node] = v;
q.insert({dist[node], node});
}
}
}
}
void solve() {
ll n, m;
fin >> n >> m;
vector<vector<pair<ll, ll>>> adj(maxn, vector<pair<ll, ll>>());
while (m--) {
ll x, y, c;
fin >> x >> y >> c;
x--;
y--;
adj[x].pb({y, c});
}
vector<ll> dist(n, maxn), prev(n, -1);
dijkstra(0, adj, dist, prev);
for (auto v : dist) {
if (v == 0) continue;
fout << v << " ";
}
fout << endl;
}
int main() {
ll t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}