zoukankan      html  css  js  c++  java
  • P103 单源最短路问题 第三种Dijkstra算法

    ///通过队列,找出最小的dis[]值,取出配对的vertex值。
    
    /// stack priority_queue set
    struct edge
    {
        int to;
        int cost;
        
    }
    ;
    vector <edge>G[MZX_V];///
    typedef pair<int ,int > Pa;///Pa.second是点的编号 Pa.first是到该点的最短距离  
    int dis[MAX_V];
    
    void Dijkstra( )
    {
        
        priority_queue< Pa,vector<Pa>,greater<Pa> >que;
        ///que中的元素是按照第一个元素的大小从小至大的顺序排列的
        
        
        ///之前初始化的 d
        
         
        dis[s]=0;
        que.push(Pa(0,s));
        
        while(!que.empty()) ///que空的时候empty返回的是true
        {
            Pa pa=que.top();
            que.pop();
            
            int temp1=pa.second();
            if(dis[temp1]<pa.first) continue;///剪枝
            for(int i=0;i<G[temp1].size();++i)
            {
                edge e=G[temp1][i];
                if(dis[ e.to ]<pa.first+e.cost)
            {
                dis[e.to]=pa.first+e.cost;
               que.push(Pa(dis[e.to],e.to));
            }
            }
            
        }
    }
  • 相关阅读:
    通过dockerfile制作nginx镜像
    docker存储卷
    docker容器网络配置
    状态模式
    抽象工厂模式
    观察者模式
    建造者模式
    外观模式
    模板方法模式
    原型模式
  • 原文地址:https://www.cnblogs.com/weiweiyi/p/5236765.html
Copyright © 2011-2022 走看看