Problem p02868 (C++)

Buggy submission (status: Time Limit Exceeded):
#include <bits/stdc++.h>

using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define reps(i, n) for (int i = 1; i <= (int)(n); ++i)
#define repd(i, n) for (int i = (int)(n - 1); i >= 0; --i)
#define repds(i, n) for (int i = (int)(n); i > 0; --i)
#define loop(i, x, n) for (int i = (int)(x); i < (n); ++i)
#define loops(i, x, n) for (int i = (int)(x); i <= (n); ++i)
#define loopd(i, x, n) for (int i = (int)(x); i > (n); --i)
#define loopds(i, x, n) for (int i = (int)(x); i >= (n); --i)
#define itrep(i, s) for (auto i = begin(s); i != end(s); ++i)
#define itrepd(i, s) for (auto i = --end(s); i != begin(s); --i)
#define all(f, x, ...)                                                         \
  [&](decltype(x) &whole) {                                                    \
    return (f)(begin(whole), end(whole), ##__VA_ARGS__);                       \
  }(x)
#define rall(f, x, ...)                                                        \
  [&](decltype(x) &whole) {                                                    \
    return (f)(rbegin(whole), rend(whole), ##__VA_ARGS__);                     \
  }(x)
using ll = long long;
using ld = long double;
constexpr ll inf = static_cast<ll>(1e17);
constexpr int iinf = static_cast<int>(1e9);
constexpr double dinf = 1e10;
constexpr ld ldinf = 1e17;
ll mod = static_cast<ll>(1e9 + 7);
std::ostream &endn(std::ostream &os) { return os.put(os.widen('\n')); }
template <class T> constexpr int sz(const T &a) { return (int)a.size(); }
template <class T, class... Args> constexpr T mins(T &a, Args... args) {
  return a = min<T>({a, args...});
}
template <class T, class... Args> constexpr T maxs(T &a, Args... args) {
  return a = max<T>({a, args...});
}

int n, m;
vector<pair<int, ll>> g[100005];
ll d[100005];
void solve() {
  cin >> n >> m;

  rep(i, n - 1) g[i + 1].emplace_back(i, 0);

  rep(i, m) {
    int l, r;
    ll c;
    cin >> l >> r >> c;
    --l;
    --r;

    g[l].emplace_back(r, c);
  }

  fill(d, d + n, inf);

  priority_queue<pair<ll, int>> que;
  que.emplace(0LL, 0);
  d[0] = 0;
  while (!que.empty()) {
    auto p = que.top();
    que.pop();
    auto v = p.second;

    if (d[v] < p.first)
      continue;

    rep(i, g[v].size()) {
      auto e = g[v][i];
      if (d[v] + e.second < d[e.first]) {
        d[e.first] = d[v] + e.second;
        que.emplace(d[e.first], e.first);
      }
    }
  }

  if (d[n - 1] != inf)
    cout << d[n - 1] << endn;
  else
    cout << -1 << endn;
}

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(15);
  solve();
  cout << flush;
  return 0;
}


Fixed submission:
#include <bits/stdc++.h>

using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define reps(i, n) for (int i = 1; i <= (int)(n); ++i)
#define repd(i, n) for (int i = (int)(n - 1); i >= 0; --i)
#define repds(i, n) for (int i = (int)(n); i > 0; --i)
#define loop(i, x, n) for (int i = (int)(x); i < (n); ++i)
#define loops(i, x, n) for (int i = (int)(x); i <= (n); ++i)
#define loopd(i, x, n) for (int i = (int)(x); i > (n); --i)
#define loopds(i, x, n) for (int i = (int)(x); i >= (n); --i)
#define itrep(i, s) for (auto i = begin(s); i != end(s); ++i)
#define itrepd(i, s) for (auto i = --end(s); i != begin(s); --i)
#define all(f, x, ...)                                                         \
  [&](decltype(x) &whole) {                                                    \
    return (f)(begin(whole), end(whole), ##__VA_ARGS__);                       \
  }(x)
#define rall(f, x, ...)                                                        \
  [&](decltype(x) &whole) {                                                    \
    return (f)(rbegin(whole), rend(whole), ##__VA_ARGS__);                     \
  }(x)
using ll = long long;
using ld = long double;
constexpr ll inf = static_cast<ll>(1e17);
constexpr int iinf = static_cast<int>(1e9);
constexpr double dinf = 1e10;
constexpr ld ldinf = 1e17;
ll mod = static_cast<ll>(1e9 + 7);
std::ostream &endn(std::ostream &os) { return os.put(os.widen('\n')); }
template <class T> constexpr int sz(const T &a) { return (int)a.size(); }
template <class T, class... Args> constexpr T mins(T &a, Args... args) {
  return a = min<T>({a, args...});
}
template <class T, class... Args> constexpr T maxs(T &a, Args... args) {
  return a = max<T>({a, args...});
}

int n, m;
vector<pair<int, ll>> g[100005];
ll d[100005];
void solve() {
  cin >> n >> m;

  rep(i, n - 1) g[i + 1].emplace_back(i, 0);

  rep(i, m) {
    int l, r;
    ll c;
    cin >> l >> r >> c;
    --l;
    --r;

    g[l].emplace_back(r, c);
  }

  fill(d, d + n, inf);

  priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<>> que;
  que.emplace(0LL, 0);
  d[0] = 0;
  while (!que.empty()) {
    auto p = que.top();
    que.pop();
    auto v = p.second;

    if (d[v] < p.first)
      continue;

    rep(i, g[v].size()) {
      auto e = g[v][i];
      if (d[v] + e.second < d[e.first]) {
        d[e.first] = d[v] + e.second;
        que.emplace(d[e.first], e.first);
      }
    }
  }

  if (d[n - 1] != inf)
    cout << d[n - 1] << endn;
  else
    cout << -1 << endn;
}

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(15);
  solve();
  cout << flush;
  return 0;
}