算法概要:从没有访问的点里,找到距离起点最近的点,然后更新该点到其相邻且未访问点的距离
1.找出距离最小的点s1 这块我其实有个疑问,如果be这个顶点和别的点都不连接,那么这块计算不下去了?
2.根据s1到它连接的每一个e1,如果 (开始节点->s1)+(s1->e1)<(开始节点->e1) 那么开始节点->e1需要更新一下
package info.frady.algo;
/**
meng3.wei 2020.04.25
//参考 https://www.jianshu.com/p/ff6db00ad866
从0出发到0的最短距离为:0
0-->0
从0出发到1的最短距离为:3
0-->3-->1
从0出发到2的最短距离为:3
0-->3-->2
从0出发到3的最短距离为:2
0-->3
从0出发到4的最短距离为:6
0-->3-->2-->4
*/
public class 迪杰斯特拉 {
public static final int M = 1000000; // 代表正无穷
public static int n;//顶点的个数
public static int[] shortPathLen ; // 保存start到其他各点的最短路径
public static boolean [] visited;
public static int[] pid;
public static void main(String[] args) {
// 二维数组每一行分别是 A、B、C、D、E 各点到其余点的距离,
// A -> A 距离为0, 常量M 为正无穷
int[][] weight1 = {
{0,4,M,2,M},
{4,0,4,1,M