算法原理就不多说了,就讲一讲实现
代码采用邻接矩阵的数据结构,a(i,j)代表第i个节点到第j个节点的距离,不能到达为无穷,代码中设为10000000。
另外数组len代表节点0到每个节点到最短路程,每循环一次就更新一次,vis数组表示访问情况,1表示访问过,0表示未访问。
算法分为2步:
(1)置len数组的值,直接将矩阵的第一行给len赋值即可 vis[0] = 1;
(2)n-2次循环,每次加入一个节点(为什么不是n-1次呢?最后一次就一个点了,没什么好更新的)
每次循环做的事:
1)找到下一个节点(next_node函数)
2)将找到节点的后继的len值进行更新
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 10000000;
const