阅读背景:

堆优化的迪杰斯特拉算法_weixin_34268310的博客

来源:互联网 

堆优化的迪杰斯特拉

迪杰斯特拉算法

  • 核心代码
rep(i, 1 , n-1){
    int minx = inf;//对于每一次找点,都要找当前最短路的点
    int pos;//记录一下是哪个点
    //**********优化点A*************
    rep(j , 1 , n){
        if(!vis[j] && dis[j] < minx){
            minx = dis[j];
            pos = j;
        }
    }
    //pos顶点加入S集合
    vis[pos] = 1;

    //************优化点B*****************
    //由于pos顶点的进入 对S集合以外的结点 其距离因为pos的加入需要进行更新
    rep(k, 1 , n){
        if(!vis[k] && dis[k] > dis[pos] + G[pos][k]){
            dis[k] = dis[pos] + G[pos][k];
        }
    }
}re



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: