当前位置: 首页 > news >正文

dijkstra

lc3928

跑2n次dijk+剪枝优化

class Solution {
vector<int> dijkstra(vector<vector<pair<int, int>>>& g, int start, int price) {
vector<int> dis(g.size(), price);
// 堆中保存 (起点到节点 x 的最短路长度,节点 x)
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq;
dis[start] = 0; // 起点到自己的距离是 0
pq.emplace(0, start);

while (!pq.empty()) {
auto [dis_x, x] = pq.top();
pq.pop();
if (dis_x > dis[x]) {
// x 之前出堆过
continue;
}
for (auto& [y, wt] : g[x]) {
auto new_dis_y = dis_x + wt;
if (new_dis_y < dis[y]) {
dis[y] = new_dis_y;
// 更新 x 的邻居的最短路
// 懒更新堆:只插入数据,不更新堆中数据
// 相同节点可能有多个不同的 new_dis_y,除了最小的 new_dis_y,其余值都会触发上面的 continue
pq.emplace(new_dis_y, y);
}
}
}

return dis;
}

public:
vector<int> minCost(int n, vector<int>& prices, vector<vector<int>>& roads) {
int max_price = ranges::max(prices);

vector<vector<pair<int, int>>> g1(n);
vector<vector<pair<int, int>>> g2(n);
for (auto& e : roads) {
int x = e[0], y = e[1], cost = e[2], tax = e[3];
if (cost < max_price) {
g1[x].emplace_back(y, cost);
g1[y].emplace_back(x, cost);
}
if (1LL * cost * tax < max_price) {
g2[x].emplace_back(y, cost * tax);
g2[y].emplace_back(x, cost * tax);
}
}

vector<int> ans(n, INT_MAX);
for (int i = 0; i < n; i++) {
vector<int> dis1 = dijkstra(g1, i, prices[i]);
vector<int> dis2 = dijkstra(g2, i, prices[i]);
for (int j = 0; j < n; j++) {
if (dis1[j] + dis2[j] < ans[i] - prices[j]) { // 为避免加法溢出,把 prices[j] 移到右边
ans[i] = prices[j] + dis1[j] + dis2[j];
}
}
}
return ans;
}
};

http://www.jsqmd.com/news/855029/

相关文章:

  • [qemu+kvm]: iommu 开关代码分析
  • 【数据结构】顺序表
  • 2026市政地标精神堡垒:发光精神堡垒/商业街精神堡垒/四川交通标识标牌厂家/四川加油站标识标牌/四川加油站灯箱标牌/选择指南 - 优质品牌商家
  • 软考高项案例分析6:项目资源管理
  • 2026年APP广告接入平台技术选型指南:工具APP收益提升/开源广告SDK/微信小程序广告/聚合广告联盟/APP变现/选择指南 - 优质品牌商家
  • 菩瓦纽课业平台:打破教育内卷,让刷题更精准,成长更高效
  • 5015系列圆形连接器选型避坑指南
  • 2025年Gartner中国安全技术成熟度曲线解读:软件供应链安全从“过热”到“落地”的演进之路
  • CANN ops-transformer 的 FlashAttention:把大模型的记忆从 32GB 压到 8GB,怎么做到的
  • 合肥假发店TOP5评测|专业形象管理指南,揭秘靠谱之选! - 行业深度观察C
  • Lua 脚本执行 Redis 队列逻辑出现 ERR 错误怎么排查?
  • 2026年积分兑换柜优质品牌推荐榜:电子去向牌、礼品兑换柜、五育兑换柜、五金电子门牌、人员去向电子牌、会议电子门牌选择指南 - 优质品牌商家
  • 集团化全员学习企业在线学习平台选型指南|政企专属解决方案
  • Seedance2.0内容创作干货!学会这四点教你用 Seedance 2.0 拍出电影感!
  • 2026 运营实战:AI 电商生图能快速上手的工具深度测评,哪款是你的大促生产力?
  • ViMax:AI导演、编剧、制片人一体化——颠覆传统视频制作的智能体革命
  • 2026年开源广告SDK:APP广告变现、APP广告收益提升、APP想接入广告、SDK变现、工具APP收益提升选择指南 - 优质品牌商家
  • 影刀RPA跨境店群自动化实战:Python协同Chromium打破风控“垄断”的高并发调度系统架构
  • 电动汽车创企Fisker破产后,4000名车主自发组建开源汽车公司延续车辆生命。
  • 2026年移动广告联盟TOP5盘点:APP变现、APP商业化变现、APP广告收益提升、APP广告素材合规、APP想接入广告选择指南 - 优质品牌商家
  • 2026年q2物业托管技术全解析:成都清洁外包/成都物业公司/成都物业外包/攀枝花保洁公司/选型与落地核心推荐 - 优质品牌商家
  • # 让工具自己声明并发安全:我把调度逻辑砍到一行
  • DeepSeek RAG场景GPU资源黑洞:向量检索+重排序+生成三阶段显存泄漏的48小时定位实录(含perf脚本)
  • 2026年Q2权威APP变现平台排行:APP商业化变现、APP广告变现、APP广告收益提升、APP广告素材合规选择指南 - 优质品牌商家
  • 百度 Agent 安全中心:构筑企业智能体的安全底座
  • 某消费电子终端上市公司实例:德思特衰减器方案以1/3成本精准复现弱网与WiFi干扰场景
  • Perplexity写作辅助效率翻倍:3个被低估的核心技巧,今天不用明天就落后
  • 初创团队如何利用 Taotoken 以最小成本验证多个大模型能力
  • 别只当题做!我把CTFshow Web信息搜集题(11-20)变成了真实漏洞挖掘指南
  • 覆盖20+省市:合豚无人零售SaaS赋能全渠道零售