尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

最短路径树(SPT问题)

最短路径树(SPT问题)
📅 发布时间:2026/6/20 11:59:25

最短路径树(SPT问题)

定义:在一张无向带权联通图中,有这样一棵生成树:满足从根节点到任意点的路径都为原图中根到任意点的最短路径。

性质:记根节点 \(Root\) 到某一结点 \(x\) 的最短距离 \(dis_{Root,x}\) ,在 \(SPT\) 上这两点之间的距离为 \(len_{Root,x}\) ——则两者长度相等。

该算法与最小生成树无关,基于最短路 \(\tt Djikstra\) 算法完成(但多了个等于号)。下方代码实现的功能为:读入图后,输出以 \(1\) 为根的 \(\tt SPT\) 所使用的各条边的编号、边权和。

map<pair<int, int>, int> id;
namespace G {vector<pair<int, int> > ver[N];map<pair<int, int>, int> edge;int v[N], d[N], pre[N], vis[N];int ans = 0;void add(int x, int y, int w) {ver[x].push_back({y, w});edge[{x, y}] = edge[{y, x}] = w;}void djikstra(int s) { // !注意,该 djikstra 并非原版,多加了一个等于号priority_queue<PII, vector<PII>, greater<PII> > q; q.push({0, s});memset(d, 0x3f, sizeof d); d[s] = 0;while (!q.empty()) {int x = q.top().second; q.pop();if (v[x]) continue; v[x] = 1;for (auto [y, w] : ver[x]) {if (d[y] >= d[x] + w) { // !注意,SPT 这里修改为>=号d[y] = d[x] + w;pre[y] = x; // 记录前驱结点q.push({d[y], y});}}}}void dfs(int x) {vis[x] = 1;for (auto [y, w] : ver[x]) {if (vis[y]) continue;if (pre[y] == x) {cout << id[{x, y}] << " "; // 输出SPT所使用的边编号ans += edge[{x, y}];dfs(y);}}}void solve(int n) {djikstra(1); // 以 1 为根dfs(1); // 以 1 为根cout << endl << ans; // 输出SPT的边权和}
}
bool Solve() {int n, m; cin >> n >> m;for (int i = 1; i <= m; ++ i) {int x, y, w; cin >> x >> y >> w;G::add(x, y, w), G::add(y, x, w);id[{x, y}] = id[{y, x}] = i;}G::solve(n);return 0;
}

相关新闻

  • 多源汇最短路(APSP问题)
  • 单源最短路径(SSSP问题)
  • 最近公共祖先 LCA

最新新闻

  • 2026年大平层装修深度测评:如何为你的改善型住宅匹配最佳方案? - 速递信息
  • ARM Cortex-M4微控制器架构解析:从内核到低功耗设计实战
  • 肇庆黄金回收实测六家靠谱老店盘点 - 余生黄金回收
  • 从高危RCE漏洞到POC分析:实战环境搭建与防御体系构建
  • 2026年6月最新劳力士中国官方售后服务地址与客服电话网点列表 - 劳力士服务中心
  • 合肥中科信息工程学校 2026 秋季招生全解析,附官方正规报名入口 - 辛云教育资讯

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号