Dijkstra算法
dijksta算法用于求单源最短路
适用条件:
图的所有边权为正数
可以维护:
最短路条数
最短路中点权和的最值
······
例题https://blog.csdn.net/sjystone/article/details/115473739
1.朴素版dijkstra算法
朴素版dijkstra用邻接矩阵矩阵存图,一般用于稠密图
设有n个点
步骤:
进行n次循环,每次循环可以确定一个点的最短路
每次循环找出当前没有确定最短路(没有标记)的点中,距离最近的点,并将其标记
用该点更新他的邻点的最短路距离
代码及解析:
#include <iostream>
#include <cstring>
using namespace std;
const int N = 510;
int g[N][N], n, m, dist[N]; //g用于存图,n是点数,m是边数,dist是每个点的最短路距离
bool st[N]; //用于判断该点最短路是否已经确定
int dijkstra()
{
memset(dist, 0x3f, sizeof dist); //初始化距离为无穷大
dist[1] = 0; //初始化起点距离为0,若起点不是1号点,在此直接更换即可
for ( int i = 0; i < n; i ++ ) //进行n次循环
{
i