Pagini recente » Cod sursa (job #2067237) | Cod sursa (job #890460) | Cod sursa (job #529062) | Cod sursa (job #1522421) | Cod sursa (job #3152130)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <unordered_map>
#include <set>
#include <queue>
#include <stack>
#include <deque>
#include <iomanip>
#include <vector>
#include <bitset>
#pragma GCC optimize("O3")
#define fi first
#define se second
#define pb push_back
#define pf push_front
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
typedef long long ll;
const ll Nmax=5e4+5, inf=(ll)1e15+5;
using pii=pair<int, int>;
ll n, m, dp[Nmax];
vector <pii> ad[Nmax];
bool vis[Nmax];
priority_queue <pii, vector<pii>, greater<pii>> pq;
inline void dijkstra(){
dp[0]=0;
for (int i=1; i<n; i++)
dp[i]=inf;
pq.push({0, 0});
while (!pq.empty()){
pii crt=pq.top();
pq.pop();
if (vis[crt.se])
continue;
vis[crt.se]=1;
for (auto it:ad[crt.se]){
dp[it.fi]=min(dp[it.fi], dp[crt.se]+it.se);
pq.push({dp[it.fi], it.fi});
}
}
}
int main()
{
fin>>n>>m;
int a, b, c;
for (int i=0; i<m; i++){
fin>>a>>b>>c;
a--; b--;
ad[a].pb({b, c});
}
dijkstra();
for (int i=1; i<n; i++){
if (dp[i]==inf)
fout<<0<<' ';
else fout<<dp[i]<<' ';
}
return 0;
}