图存储方式:链式前向星
一, 基础dijkstra
基本思路:
1.定义ans[100000],ans[i]代表到达i点的最小花费
2.定义bool数组visit,代表是否来过这里
2.ans[起点] = 0, 其余的赋值为inf
3.定义一个curr变量,visit[current] = 1(访问过),代表现在的位置,初始值为起点。
4.列举所有与curr相联通的的点,将这些点(i)的ans值更新:
ans[i] = min(ans[i], ans[curr] + ans[i] = min(ans[i], ans[curr] + 到这些点需要的花费))
5. 列举所有访问过的的点,找到ans值最小的点,赋值给curr,visit[current] = 1(访问过)
6 所有点都访问过(visit[i]都 == 1),程序结束。此时,ans[i]代表从起点到i的最短路径
代码:
二, 堆优化的dijkstra
代码