Pagini recente » Cod sursa (job #1805011) | Cod sursa (job #349265) | Cod sursa (job #22370) | Cod sursa (job #2157168) | Cod sursa (job #3250323)
#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#pragma GCC optimize ("fast-math")
#pragma GCC optimize ("unroll-loops")
using namespace std;
#define int long long
#define ll long long
#define all (x) begin(x), end (x)
#define xx first
#define yy second
#define INF (1 << 30)
#define cin fin
#define cout fout
ifstream cin ("dijkstra.in");
ofstream cout ("dijkstra.out");
using pii = pair <int, int>;
using tii = tuple <int, int, int>;
int n, m;
int a, b, c;
constexpr int NMAX = (int) 25e4;
constexpr int VMAX = (int) 5e4;
vector <pii> v[NMAX + 1];
vector <int> dp(VMAX + 1, INF);
array <bool, VMAX + 1> fr;
inline void bfs (int nod)
{
priority_queue <pii, vector <pii>, greater <pii>> pq;
pq.push(make_pair (0, nod));
dp[nod] = 0;
while (!pq.empty())
{
nod = pq.top().second;
pq.pop();
if(fr[nod])
continue;
fr[nod] = 1;
for (auto elem : v[nod]){
int val = elem.first;
int val1 = elem.second;
if (dp[nod] + val1 < dp[val])
{
dp[val] = val1 + dp[nod];
pq.push(make_pair(dp[val], val));
}
}
}
}
signed main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n >> m;
for (int i = 1; i <= m; ++ i){
cin >> a >> b >> c;
v[a].push_back(make_pair (b, c));
}
bfs (1);
for (int i = 2; i <= n; ++ i)
{
if (dp[i] != INF)
{
cout << dp[i] << ' ';
}
else
cout << " 0 ";
}
return 0;
}