首页 > 其他 > 详细

堆优化的dijkstra

时间:2018-02-26 22:16:57      阅读:239      评论:0      收藏:0      [点我收藏+]
技术分享图片
 1 struct node
 2 {
 3     int id,dis;
 4     bool operator < (const node &rhs) const
 5     {
 6         return dis>rhs.dis;
 7     }
 8 } ;
 9 priority_queue<node>q;
10 void dijkstra(int s)
11 {
12     for(int i=1;i<=n;i++)v[i]=0,d[i]=inf;
13     d[s]=0;
14     q.push((node){s,0});
15     while(!q.empty())
16     {
17         node ff=q.top();q.pop();
18         if(v[ff.id]==1) continue;
19         v[ff.id]=1;
20         for(int i=h[ff.id];i;i=e[i].ne)
21         {
22             if(d[ff.id]+e[i].c<d[e[i].v])
23             {
24                 d[e[i].v]=d[ff.id]+e[i].w;
25                 q.push((node){e[i].v,d[e[i].v]});
26             }        
27         }
28     }
29 }
View Code

直接看代码吧。

原理,不讲,我什么都不说

 

粪虫至秽,变为蝉而饮露于秋风。

堆优化的dijkstra

原文:https://www.cnblogs.com/adelalove/p/8476260.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!