码迷,mamicode.com
首页 > 其他好文 > 详细

dijkstra模板

时间:2018-02-14 12:22:55      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:priority   题目   log   ons   als   rom   memset   return   node   

题目大意:

最短路模板;

基本思路:

贪心

代码如下:

int dis[maxn];
bool vis[maxn];
vector<int>gra[maxn];
struct Node{
    int u,w;
    Node(int u_,int w_){
        u=u_;w=w_;
    }
    bool operator<(const Node& rhs)const{
        return w>rhs.w;
    }
};
struct Edge{
    int from,to,dist;
    Edge(int u,int v,int d):from(u),to(v),dist(d){}
}edge[maxn];
void dijkstra(int s){
    priority_queue<Node>pq;pq.push(Node(s,0));
    memset(dis,inf,sizeof(dis));dis[s]=0;
    memset(vis,false,sizeof(vis));
    while(!pq.empty()){
        Node tmp=pq.top();
        int u=tmp.u;
        if(vis[u]){
            continue;
        }
        vis[u]=true;
        int sz=gra[u].size();
        for(int i=0;i<sz;i++){
            Edge& e=edge[gra[u][i]];
            if(dis[e.to]>dis[u]+e.dist){
                dis[e.to]=dis[u]+e.dist;
                pq.push(Node(e.to,dis[e.to]));
            }
        }
    }
}

  

dijkstra模板

标签:priority   题目   log   ons   als   rom   memset   return   node   

原文地址:https://www.cnblogs.com/imzscilovecode/p/8448119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!