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

 #include<stdio.h>        //基本需要的头文件
#include<string.h>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;
typedef pair<int,int> pii;
const int INF=0x3f3f3f3f; const int maxn=1e5+;
const int maxm=1e5+; int head[maxn],nxt[maxm<<],val[maxm<<],point[maxm<<],size;
int dis[maxn]; void init(){
memset(head,-,sizeof(head));
size=;
} void add(int a,int b,int v){ //若有向图则只需要前一半
point[size]=b;
val[size]=v;
nxt[size]=head[a];
head[a]=size++; point[size]=a;
val[size]=v;
nxt[size]=head[b];
head[b]=size++;
} struct cmp{ //将优先队列改为小根堆
bool operator()(pii a,pii b){
return a.first>b.first;
}
}; void dij(int s,int t){ //传入出发点和到达点
int i;
priority_queue<pii,vector<pii>,cmp>q;
q.push(make_pair(,s));
memset(dis,0x3f,sizeof(dis));
dis[s]=;
while(!q.empty()){
pii u=q.top();
q.pop();
if(u.first>dis[u.second])continue;
for(i=head[u.second];~i;i=nxt[i]){
int j=point[i];
if(dis[j]>u.first+val[i]){
dis[j]=u.first+val[i];
q.push(make_pair(dis[j],j));
}
}
}
printf("%d\n",dis[t]); //或去掉在主函数中输出或操作
}

最开始是因为寒假集训的时候学长讲的用pair存进优先队列的,实际上我更喜欢用结构体重载运算符来实现,所以也放上来。

另外……之前上面的代码里……有个size打成了sise,但是因为平时直接手敲,所以没有用这个贴过题,一直没有发现,甚至还看到有某些不明真相的网站把这篇复制粘贴过去了,非常的尴尬233333

反正我不尴尬啦

 #include<stdio.h>        //基本需要的头文件
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f; const int maxn=1e3+;
const int maxm=1e5+; struct pii{
int dis;
int s;
bool operator < (const pii x)const{
return dis > x.dis;
}
pii(int a,int b):dis(a),s(b){};
};
int head[maxn],nxt[maxm<<],val[maxm<<],point[maxm<<],size;
int dis[maxn]; void init(){
memset(head,-,sizeof(head));
size=;
} void add(int a,int b,int v){
point[size]=b;
val[size]=v;
nxt[size]=head[a];
head[a]=size++;
} void dij(int s,int t){ //传入出发点和到达点
int i;
priority_queue<pii>q;
q.push(pii(,s));
memset(dis,0x3f,sizeof(dis));
dis[s]=;
while(!q.empty()){
pii u=q.top();
q.pop();
if(u.dis>dis[u.s])continue;
for(i=head[u.s];~i;i=nxt[i]){
int j=point[i];
if(dis[j]>u.dis+val[i]){
dis[j]=u.dis+val[i];
q.push(pii(dis[j],j));
}
}
}
printf("%d\n",dis[t]); //或去掉在主函数中输出或操作
}

最短路--dijkstra+优先队列优化模板的更多相关文章

  1. (模板)poj2387(dijkstra+优先队列优化模板题)

    题目链接:https://vjudge.net/problem/POJ-2387 题意:给n个点(<=1000),m条边(<=2000),求结点n到结点1的最短路. 思路:dijkstra ...

  2. Dijkstra + 优先队列优化 模板

    #include <cstdio> #include <cstring> #include <queue> #include <vector> #inc ...

  3. 地铁 Dijkstra(优先队列优化) 湖南省第12届省赛

    传送门:地铁 思路:拆点,最短路:拆点比较复杂,所以对边进行最短路,spfa会tle,所以改用Dijkstra(优先队列优化) 模板 /******************************** ...

  4. hdu 2544 单源最短路问题 dijkstra+堆优化模板

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. 【bzo1579】拆点+dijkstra优先队列优化+其他优化

    题意: n个点,m条边,问从1走到n的最短路,其中有K次机会可以让一条路的权值变成0.1≤N≤10000;1≤M≤500000;1≤K≤20 题解: 拆点,一个点拆成K个,分别表示到了这个点时还有多少 ...

  6. hdu 1874(最短路 Dilkstra +优先队列优化+spfa)

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. 晴天小猪历险记之Hill(Dijkstra优先队列优化)

    描述 这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在.但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求助. ...

  8. 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板)

    layout: post title: 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板) author: "luowentaoaa" catalo ...

  9. POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 16178   Accepted: 526 ...

随机推荐

  1. js的单双引号

    单引号开始: 有时候上边的不行 双引号开始. 一般最外边是单引号 属性是双引号. 如果属性中还是需要一个属性的话,那么我们用\“,里边用‘+data.id+'来区分. 今天又一次遇到一次单双引号,花了 ...

  2. Unity打包的时候保存默认的输出路径,再次使用该路径的时候读取之

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; us ...

  3. 最大交换 Maximum Swap

    2018-07-28 16:52:20 问题描述: 问题求解: 使用bucket数组来记录每个数最后出现的位置,然后从左向右遍历一遍即可. public int maximumSwap(int num ...

  4. Python 爬虫-Requests库入门

    2017-07-25 10:38:30 response = requests.get(url, params=None, **kwargs) url : 拟获取页面的url链接∙ params :  ...

  5. priority_queue与bfs不得不说的古寺

    前几天写到bfs,看到之前写的,突然感觉不对,后来发现自己把点权值默认当成了边权值,导致一直走不出来: 点权值嘛,就是经过这个点时,要付出这么多的代价,边权值则是经过边时付出,二者有区别滴: 边权值求 ...

  6. UVA-818 Cutting Chains (位压缩+暴力搜索)

    题目大意:一种环能打开和闭合.现在有n(1<=n<=15)个编号为1~n的环错综复杂的连接着,要打开一些环重新连接使这n个环能构成一条链,问最少需要打开几次环可达到目的? 题目分析:用二进 ...

  7. Graph (floyd)

    Description Everyone knows how to calculate the shortest path in a directed graph. In fact, the oppo ...

  8. 正向代理到指定泛域名的nginx配置

    resolver 8.8.8.8; #必须配置!!!不然无法代理 server { listen default_server; listen [::]: default_server; server ...

  9. python 绘图 异常点绘制使用 ax.plot(abnormal_points['ds'], abnormal_points['y'], "rX", label='abnormal points')

    from matplotlib import pyplot as plt def my_plot(title, m, fcst, ax=None, uncertainty=True, plot_cap ...

  10. 文件的移动,删除 rename remove unlink 函数

    int rename(const char *oldpath, const char *newpath); rename()  renames  a  file,  moving it between ...