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

最短路--dijkstra+优先队列优化模板

时间:2015-04-24 21:07:17      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

不写普通模板了,还是需要优先队列优化的昂

 1 #include<stdio.h>        //基本需要的头文件
 2 #include<string.h>
 3 #include<queue>
 4 #include<algorithm>
 5 #include<vector>
 6 using namespace std;
 7 typedef pair<int,int> pii;
 8 const int INF=0x3f3f3f3f;
 9 
10 
11 struct cmp{                    //将优先队列改为小根堆
12     bool operator()(pii a,pii b){
13         return a.first>b.first;
14     }
15 };
16 
17 void dij(int s,int t){            //传入出发点和到达点
18     int i;
19     priority_queue<pii,vector<pii>,cmp>q;
20     q.push(make_pair(0,s));
21     memset(dist,-1,sizeof(dist));
22     dist[s]=0;
23     while(!q.empty()){
24         pii u=q.top();
25         q.pop();
26         if(u.first>dist[u.second])continue;
27         for(i=head[u.second];~i;i=next[i]){
28             int j=point[i];
29             if(dist[j]==-1||dist[j]>u.first+val[i]){
30                 dist[j]=u.first+val[i];
31                 q.push(make_pair(dist[j],j));
32             }
33         }
34     }
35     printf("%d\n",dist[t]);        //或去掉在主函数中输出或操作
36 }

 

最短路--dijkstra+优先队列优化模板

标签:

原文地址:http://www.cnblogs.com/cenariusxz/p/4454381.html

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