Dijkstra 算法
dijkstra算法是一种贪心算法,它只能使用在没有负权值的加权图中。它的步骤如下
- 创建一个记录当前最短路径的数组near和一个标记某点是否已在最短路径中的数组isGone,如果需要找出最短路径经过了哪些点,则还需要创建一个用来记录最短路径中上一个节点的数组last。
- 将near全部值设为一个无穷大,isGone全部设为false,将出发点的near设为0
- 找到当前near中最小且对应isgone为false(未加入最短路径)的点x
- 遍历与它直接相连且isGone为false的点,若near[x]加上直接相连边的权值小于near中记录的值,则更新该点。
- 将该点设为isGone
- 循环3~5,直至所有点都加入最短路径,或者剩下没加入点的near都为无穷大。
网络延迟时间
public class Solution {
public int NetworkDelayTime(int[][] times, int n, int k) {
int[] near=new int[n+1];
bool[] isGone=new bool[n+1];
for(int i=1;i<=n;i++)
{
near[i]=99999999;
isGone[i]=false;