zoukankan      html  css  js  c++  java
  • dijkstra的两种写法

    第一种,先处理源点的邻接结点,再循环处理其他结点(同陈越姥姥慕课代码)

    int findMin(){//查找为收录结点中dist最小的点
        int mind=inf;
        int minv=-1;
        for(int i=1;i<=N;i++){
            if(collected[i]==false&&dist[i]<mind){
                mind=dist[i];
                minv=i;
            }
        }
        return minv;
    }
    void dijkstra(int P){
        int v;
        for(int i=1;i<=N;i++){//先处理源点的邻接点
            dist[i]=G[P][i];
            if(dist[i]<inf){
                path[i]=P;
            }else{
                path[i]=-1;
            }
        }
        collected[P]=true;
        while(1){//再处理其他结点
            v=findMin();
            if(v==-1){
                return ;
            }
            collected[v]=true;
            for(int i=1;i<=N;i++){
                if(collected[i]==false){
                    if(dist[v]+G[v][i]<dist[i]){
                        dist[i]=dist[v]+G[v][i];
                        path[i]=v;
                        }
                    }
                }
            }
        }
    
    }

    第二种,只处理源点的dist,然后把所有结点一块循环处理

    void dijkstra(int v){
        int u;
        dist[v]=0;//只处理源点的dist
        for(int i=0;i<=N;i++){//把所有点一块处理
            int mind=inf;
            int minv=-1;
            for(int j=0;j<=N;j++){
                if(collected[j]==false&&dist[j]<mind){
                    mind=dist[j];
                    minv=j;
                }
            }
            u=minv;
            if(u==-1){
                break;
            }
            collected[u]=true;
            for(int i=0;i<=N;i++){
                if(collected[i]==false&&G[u][i]!=inf){
                    if(dist[u]+G[u][i]<dist[i]){
                        dist[i]=dist[u]+G[u][i];
                        path[i]=u;
                    }
                }
            }
        }
    }

    或许还有第三种,待更新。。。

  • 相关阅读:
    jquery插件treetable使用
    WPF界面按钮美化
    Nginx配置
    Spring Framework之AOP
    IOS抓取与反抓取
    Spring Framework之事务管理
    68- 二叉树的最近公共祖先
    Spring Framework之IoC容器
    应试教育引发的思考
    春季实习生校园招聘总结
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14337520.html
Copyright © 2011-2022 走看看