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

题解:AcWing 849 Dijkstra求最短路I

【题目来源】

AcWing:849. Dijkstra求最短路 I - AcWing题库

【题目描述】

给定一个\(n\)个点\(m\)条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出\(1\)号点到\(n\)号点的最短距离,如果无法从\(1\)号点走到\(n\)号点,则输出\(-1\)

【输入】

第一行包含整数\(n\)\(m\)

接下来\(m\)行每行包含三个整数 \(x,y,z\),表示存在一条从点\(x\)到点\(y\)的有向边,边长为\(z\)

【输出】

输出一个整数,表示\(1\)号点到\(n\)号点的最短距离。如果路径不存在,则输出\(-1\)

【输入样例】

3 3
1 2 2
2 3 1
1 3 4

【输出样例】

3

【解题思路】

image

【算法标签】

《AcWing 849 Dijkstra求最短路I》 #最短路# #Dijkstra#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 510;        // 最大节点数
const int INF = 0x3f3f3f3f;  // 无穷大int n;                    // 节点数量
int m;                    // 边数量
int g[N][N];              // 邻接矩阵存储图
int dist[N];              // 从起点到各点的最短距离
bool st[N];               // 标记节点是否已确定最短距离// Dijkstra算法求单源最短路径
// 返回:起点1到终点n的最短距离,如果不可达返回-1
int dijkstra()
{// 第一步:初始化距离数组memset(dist, 0x3f, sizeof(dist));  // 所有距离初始化为无穷大dist[1] = 0;                       // 起点到自身的距离为0// 第二步:循环n次,每次确定一个最短距离节点for (int i = 0; i < n; i++){// 找到未确定最短距离节点中,距离起点最近的节点tint t = -1;  // 存储当前最小距离节点的编号for (int j = 1; j <= n; j++){// 如果节点j未确定最短距离,且// 1) 这是第一个满足条件的节点 (t==-1)// 2) 或者节点j的距离比当前最小值更小if (!st[j] && (t == -1 || dist[t] > dist[j])){t = j;  // 更新当前最小值节点}}// 标记节点t已确定最短距离st[t] = true;// 第三步:用节点t更新其他未确定节点的距离for (int j = 1; j <= n; j++){// 如果从起点经过t到j的距离比当前记录更短,则更新dist[j] = min(dist[j], dist[t] + g[t][j]);}}// 第四步:检查终点是否可达if (dist[n] == INF){return -1;  // 不可达}return dist[n];  // 返回最短距离
}int main()
{// 输入节点数和边数scanf("%d%d", &n, &m);// 初始化邻接矩阵memset(g, 0x3f, sizeof(g));// 输入m条边while (m--){int a, b, c;scanf("%d%d%d", &a, &b, &c);// 处理重边:如果有重边,只保留权重最小的一条g[a][b] = min(g[a][b], c);}// 执行Dijkstra算法int t = dijkstra();// 输出结果printf("%d\n", t);return 0;
}

【运行结果】

3 3
1 2 2
2 3 1
1 3 4
3
http://www.jsqmd.com/news/394567/

相关文章:

  • 动态窗口算法(DWA):让机器人在迷宫中优雅前行
  • 题解:洛谷 P3378 【模板】堆
  • 生产环境用Claude Code构建AI内容创作工作流:从灵感到发布的自动化实践最佳实践与性能优化
  • 揭秘2026年航空撤离舱实力厂家,助您明智选择,靠谱的撤离舱实力厂家推荐技术领航者深度解析 - 品牌推荐师
  • 2026汽车微动开关品牌优选榜单,这些品牌值得拥有,微动开关/鼠标微动开关/小型微动开关,汽车微动开关优质厂家口碑推荐 - 品牌推荐师
  • 了解2026欧曼增压器直销厂家口碑排行,选厂不迷茫,旁通阀压力表/潍柴p10H.5增压器,增压器组件推荐排行榜单 - 品牌推荐师
  • 2026年青少年心理辅导新观察:注重口碑与专业度的机构,叛逆期教育/问题青少年/青少年厌学,青少年心理辅导中心排行 - 品牌推荐师
  • 国版“OpenClaw” 网易有道 LobsterAI宣布开源:激活Agent创新生态
  • Log4j
  • 题解:AcWing 846 树的重心
  • 自感注册权:非存在论的存在之守护
  • 2026最新!AI论文写作软件 千笔 VS 灵感ai,研究生高效写作首选!
  • 2026年2月去油去屑洗发水,这几个牌子值得一试,去屑洗发水/止痒去屑洗发水/去油去屑洗发水,去油去屑洗发水产品口碑推荐 - 品牌推荐师
  • lazarus自定义mainmenu菜单栏
  • 一文讲透|10个AI论文网站测评:MBA毕业论文写作+开题报告必备工具推荐
  • 自感注册权:非存在论的存在之守护——AI元人文对存在论僭越与技术还原主义的临界批判
  • 题解:AcWing 517 信息传递
  • 题解:AcWing 1189 刻录光盘
  • 2026年1月玉米粉碎机厂家口碑榜,这些推荐很靠谱,挤压造粒机/翻堆机/双螺杆造粒机/药材粉碎机,粉碎机实力厂家排行 - 品牌推荐师
  • 想高价回收杉德斯玛特卡?一站式平台与高效流程攻略 - 团团收购物卡回收
  • 上帝之眼_数理艺术编程_C++精灵库编程案例
  • 题解:AcWing 1164 加工零件
  • 国内开源大模型竞争加剧,技术迭代与应用落地成焦点
  • 2026隧道/机房/装饰钢板厂家推荐:无锡华龙机房新型装饰材料有限公司,多品类钢板供应 - 品牌推荐官
  • 【Redis】Ubuntu22.04安装redis++ - 实践
  • 题解:AcWing 848 有向图的拓扑序列
  • 2026盘式过滤机厂家推荐:连云港格律诗环保设备,陶瓷/真空过滤机全系供应,技术领先 - 品牌推荐官
  • 题解:AcWing 847 图中点的层次
  • 工业成品多维检测模型 - 指南
  • 2026年铝单板生产厂家实力推荐:金盛铝业有限公司,抗菌/超耐候/仿石材/双曲铝单板全系供应 - 品牌推荐官