美文网首页
1928. 规定时间内到达终点的最小花费

1928. 规定时间内到达终点的最小花费

作者: 来到了没有知识的荒原 | 来源:发表于2021-09-14 11:00 被阅读0次

1928. 规定时间内到达终点的最小花费

拆点+spfa

把点dist[x]拆成y个:dist[x][y],第二维表示到x点的时间

const int N = 1e3 + 10;
const int INF = 0x3f3f3f3f;
int e[N * 2], ne[N * 2], w[N * 2], h[N], idx;
int dist[N][N];
bool st[N][N];

void add(int a, int b, int c) {
  e[idx] = b, ne[idx] = h[a], w[idx] = c, h[a] = idx++;
}

class Solution {
 public:
  void init() {
    memset(h, -1, sizeof h);
    idx = 0;
    memset(dist, 0x3f, sizeof dist);
    memset(st, 0, sizeof st);
  }
  int minCost(int m, vector<vector<int>>& edges, vector<int>& pf) {
    init();
    int n = pf.size();
    for (auto e : edges) {
      add(e[0], e[1], e[2]), add(e[1], e[0], e[2]);
    }

    queue<pair<int, int>> q;
    q.push({0, 0});
    st[0][0] = true;
    dist[0][0] = pf[0];

    while (q.size()) {
      auto u = q.front();
      q.pop();
      int x = u.first, y = u.second;
      st[x][y] = false;
      for (int i = h[x]; i != -1; i = ne[i]) {
        int nx = e[i], ny = y + w[i];
        if (ny > m) continue;
        if (dist[nx][ny] > dist[x][y] + pf[nx]) {
          dist[nx][ny] = dist[x][y] + pf[nx];
          if (!st[nx][ny]) {
            q.push({nx, ny});
            st[nx][ny] = true;
          }
        }
      }
    }
    int res = INF;
    for (int i = 0; i <= m; i++) res = min(res, dist[n - 1][i]);
    if (res == INF) return -1;
    return res;
  }
};

相关文章

  • 1928. 规定时间内到达终点的最小花费

    1928. 规定时间内到达终点的最小花费[https://leetcode-cn.com/problems/min...

  • 累了,再坚持一下……

    当你累了想放弃的时候,不妨再坚持一下,或许就能到达成功的终点! 今天又受领了任务,明知道在规定时间内不可能完成,还...

  • 到达终点

    在这个阳光明媚的日子里,我们做着有意义的事情,参加迷你马拉松。陈诤豪和他好朋友以自己最快的速度到达了终点,今年比去...

  • 最小花费

    描述 给定一个整数数组 cost,其中cost[i] 是从楼梯第i 个台阶向上爬需要支付的费用,下标从0开始。一...

  • leetcode 746 使用最小花费爬楼梯

    写 dp 的老方法,推到出到达当前楼梯花费最小体力的公式 attach[n] = min(attach[n-1]+...

  • 为了到达终点

    人类最伟大的力量 不是多少牛顿 而是精神的力量 当我相信 当我信仰 我可以独自 纵使匍匐 也不辜负 也不放弃 去那...

  • 似乎到达终点

    准备了大半年的考研在2017年12月24日的下午17:00结束了,踏着似乎看起来愉悦的脚步走出考场,看着身边的各位...

  • 到达终点以后

    XM二十多年来一直纠结一个问题,就是父母到底爱不爱自己。她认为父母爱DD多一些,所有的东西总是要先满足DD,然后才...

  • 未到达的终点

    如果那天,我没有中途放弃,是不是就不会那么后悔,反复回想当天的情景了? 初春,气温虽有回升,但仍然带着凉意。纵然体...

  • 规定时间内

    如果没有特别的时间限制,你将在悠哉悠哉中去完成你的工作,不恐慌不着急,想做就做,不想做了就暂停。 这是最惬意舒服的...

网友评论

      本文标题:1928. 规定时间内到达终点的最小花费

      本文链接:https://www.haomeiwen.com/subject/jzhcgltx.html