fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ull unsigned long long
  4. #define ll long long
  5. #define pii pair<int, int>
  6. #define pli pair<long long, int>
  7. #define fi first
  8. #define sc second
  9. #define BIT(x, i) ((x >> i) & 1)
  10. #define eb(x) emplace_back(x)
  11. #define pb(x) push_back(x)
  12. #define pf(x) push_front(x)
  13. #define FOR(i, a, b) for(int i = a; i <= b; i++)
  14. #define FORD(i, a, b) for (int i = a; i >= b; i--)
  15. #define file ""
  16.  
  17. const int N = 1e5+5;
  18. const int LOG = 20;
  19. const int MOD = 1e9+7;
  20. const ll INF = 1e18;
  21.  
  22. int n, m;
  23. vector<pii> a[N];
  24.  
  25. void dijsktra(){
  26. vector<ll> d(n + 1, INF);
  27. priority_queue<pli, vector<pli>, greater<pli>> q;
  28. d[1] = 0;
  29. q.push({0, 1});
  30. while(!q.empty()){
  31. pli top = q.top();
  32. q.pop();
  33. int u = top.second;
  34. int dis = top.first;
  35. if (dis > d[u])
  36. continue;
  37. for (pii p : a[u]){
  38. int v = p.first;
  39. int w = p.second;
  40. if (d[v] > d[u] + w){
  41. d[v] = d[u] + w;
  42. q.push({d[v], v});
  43. }
  44. }
  45. }
  46. FOR(i, 1, n){
  47. cout << d[i] << ' ';
  48. }
  49. }
  50.  
  51. int main(){
  52. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  53. //freopen(file".inp", "r", stdin);
  54. //freopen(file".out", "w", stdout);
  55. cin >> n >> m;
  56. FOR(i, 1, m){
  57. int u, v, w;
  58. cin >> u >> v >> w;
  59. a[u].push_back({v, w});
  60. }
  61. dijsktra();
  62. return 0;
  63. }
  64.  
Success #stdin #stdout 0.01s 5956KB
stdin
10 20 1 3 742 2 5 613 3 9 805 4 1 296 5 10 934 6 2 471 7 4 888 8 6 123 9 7 690 10 8 557 2 3 418 3 6 731 4 9 265 5 7 549 6 10 902 7 1 377 8 2 845 9 5 608 10 3 791 1 9 356
stdout
0 1944 742 1934 964 1473 1046 2455 356 1898