Problem 2087 --算法7-15:迪杰斯特拉最短路径算法

2087: 算法7-15:迪杰斯特拉最短路径算法

"
Time Limit $1$ 秒/Second(s) Memory Limit $512$ 兆字节/Megabyte(s)
提交总数 $253$ 正确数量 $481$
裁判形式 标准裁判/Standard Judge 我的状态 尚未尝试
难度 分类标签 图论
在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。
在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用的一种,是一种按照路径长度递增的次序产生最短路径的算法。

可将迪杰斯特拉算法描述如下:


在本题中,读入一个有向图的带权邻接矩阵(即数组表示),建立有向图并按照以上描述中的算法求出源点至每一个其它顶点的最短路径长度。
输入的第一行包含2个正整数n和s,表示图中共有n个顶点,且源点为s。其中n不超过50,s小于n。
以后的n行中每行有n个用空格隔开的整数。对于第i行的第j个整数,如果大于0,则表示第i个顶点有指向第j个顶点的有向边,且权值为对应的整数值;如果这个整数为0,则表示没有i指向j的有向边。当i和j相等的时候,保证对应的整数为0。
只有一行,共有n-1个整数,表示源点至其它每一个顶点的最短路径长度。如果不存在从源点至相应顶点的路径,输出-1。
请注意行尾输出换行。
4 1
0 3 0 1
0 0 4 0
2 0 0 0
0 0 1 0
6 4 7 
在本题中,需要按照题目描述中的算法完成迪杰斯特拉算法,并在计算最短路径的过程中将每个顶点是否可达记录下来,直到求出每个可达顶点的最短路径之后,算法才能够结束。
迪杰斯特拉算法的特点是按照路径长度递增的顺序,依次添加下一条长度最短的边,从而不断构造出相应顶点的最短路径。
另外需要注意的是,在本题中为了更方便的表示顶点间的不可达状态,可以使用一个十分大的值作为标记。

推荐代码 查看2087 所有题解 上传题解视频得图灵币

本题记录 用 户(点击查看用户) 运行号(点击购买题解) 时 间
算法最快[$0 $ms] 等你掀裙 850382 2022-04-30 23:50:33
内存最少[$952 $KB] 范晋豪@信息与计算科学142 152737 2017-11-16 15:10:16
第一AC 范晋豪@信息与计算科学142 152736 2017-11-16 15:10:16
第一挑战 范晋豪@信息与计算科学142 152736 2017-11-16 15:10:16

赛题来源/所属竞赛 数据结构高分笔记 数据结构高分笔记

竞赛编号 竞赛名称 竞赛时间 访问比赛
1803 2023-2024-2学期<计算机专业竞赛实训> 第7-8周练习:图论算法【22计算机】 2024-04-08 00:00:00 请登录
1771 2023-2024-1学期<编译原理> 第15-17周练习:图算法、中间代码生成优化实验【21计算机1234】 2023-12-11 09:00:00 请登录
1743 2022-2023-2学期<计算机专业竞赛实训> 第9-10周练习:图论算法【21计算机12345】 2023-04-17 00:00:00 请登录
1689 2021-2022-2学期<算法分析与设计> 第9-10周练习:图论算法 2022-04-18 08:00:00 请登录