Dijkstra算法实例

#include
using namespace std;
#define Max 1000.0
void dijkstra(int v,float a[6][6],float* dist,int* prev,int Num)
{
    int n = Num-1;
    if(v<1||v>n) return;
    int s[6+1];
    ///初始化
    for(int i = 1;i<=n;i++)
    {
        dist[i] = a[v][i];
        s[i] = 0;
        if(dist[i] == Max)prev[i] = 0;
        else prev[i] = v;
    }
    dist[v] = 0;
    s[v] = 1;
    for(int i = 1;i

关于算法的理解和证明,参考《算法设计与分析》,王晓东著。

关于代码理解,建议手动模拟。(由于数据的特殊性,手动模拟相当简单而且易懂)

你可能感兴趣的:(Dijkstra算法实例)