#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
/*
Dijkstra算法,邻接矩阵形式,复杂度为O(n^2)
求出源beg到所有点的最短路径,
传入图的顶点数n和邻接矩阵cost[][]
返回各点的最短路径lowcost[],
路径pre[],pre[i]记录beg到i路径上的父节点,pre[beg]=-1
权值必须非负,下标0-n
*/
const int MAXN = 1010; //最大顶点数目
const int INF = 0x3f3f3f3f; //表示无穷
bool vis[MAXN]; //用于区分访问过/未访问过的顶点
int pre[MAXN]; //记录路径上i的父节点
void Dijkstra(int cost[][MAXN], int lowcost[], int n, int beg)
{
//第一步、初始化lowcost, vis, pre
for(int i=0; i<=n; i++)
{
lowcost[i]=INF;
vis[i]
【杭电100题】【Dijkstra】2066 一个人的旅行
最新推荐文章于 2020-12-06 00:42:43 发布