图论之朴素迪杰斯特拉
1.原题地址
之前自己蓝桥杯拿到省二第一名,非常遗憾没有进入决赛的原因就是图论的两个题目一个都不会写,因为自己但是做完了往前十年的题目,省赛都是没有考过图论的,所以我当时打算的就是进入决赛之后再学习图论,没想今年蓝桥杯的题目风格大变,让我措手不及,也酿成了我大三最大的遗憾,所以我打算再准备一年,反正保研了大四会轻松些,我一定要拿到国奖!
附上Acwing上的该题链接:
Acwing849朴素迪杰斯特拉Ⅰ
2.数据结构和算法思路
适用于稠密图,用邻接矩阵存
双重循环O(n^2)
数据结构:
- 二维数组map,该算法用于稠密图,用二维数组存储
- s[t],存储当前这个点有没有加入到已经找到最短路的集合中
- d[n],存储各个点到1号点的距离
算法:
- 初始化:到一号点(自己)的距离为0,到其余点的距离为负无穷
- 外层for循环,遍历每一个点
- 内层for循环,遍历找到没有在(已找到最短距离的)集合中的距离最短的点,并将其加入集合
- 用刚刚加入集合的点更新其他点到1号点的距离
3.AC代码
#i