队列优化的dijkstra

时间:2022-10-29 01:09:11
#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef pair<int, int> pii;
const int maxn=1e5+5, maxm=2e5+5;
struct edge
{
int t, w; edge * nxt;
edge(int to, int len, edge * next){ t=to, w=len, nxt=next; }
};
edge * head[maxn];
void add(int u, int v, int len){ head[u]=new edge(v, len, head[u]); }
int dis[maxn], v[maxn], n, m, s; void dijkstra(int s)
{
memset(dis, 0x3f, sizeof dis); //sizeof不是一个函数,而是运算符,这种用法是可以的
priority_queue<pii, vector<pii>, greater<pii> > Q; //小根堆
dis[s]=0;
Q.push(make_pair(0, s));
while(!Q.empty())
{
int x=Q.top().second;
if(v[x]) { Q.pop(); continue;} //continue;之前一定要pop掉,否则会死循环
else { v[x]=true; dis[x]=Q.top().first; Q.pop();} for(edge *p=head[x]; p; p=p->nxt) if (!v[p->t]) Q.push(make_pair(dis[x]+p->w, p->t));
}
} int main()
{
scanf("%d%d%d", &n, &m, &s);
for(int i=1, x, y, z; i<=m; i++) scanf("%d%d%d", &x, &y, &z), add(x, y, z);
dijkstra(s);
for(int i=1; i<=n; i++) printf("%d ", dis[i]);
printf("\n");
return 0;
}

队列优化的dijkstra的更多相关文章

  1. HDU 2544 最短路(floyd&plus;bellman-ford&plus;spfa&plus;dijkstra队列优化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目大意:找点1到点n的最短路(无向图) 练一下最短路... dijkstra+队列优化: #i ...

  2. POJ-3255 Roadblocks---Dijkstra队列优化&plus;次短路

    题目链接: https://vjudge.net/problem/POJ-3255 题目大意: 给无向图,求1到n的次短路长度 思路: 由于边数较多,应该使用dijkstra的队列优化 用d数组存储最 ...

  3. POJ-1511 Invitation Cards---Dijkstra&plus;队列优化&plus;前向星正向反向存图

    题目链接: https://vjudge.net/problem/POJ-1511 题目大意: 给定节点数n,和边数m,边是单向边. 问从1节点出发到2,3,...n 这些节点路程和从从这些节点回来到 ...

  4. 关于SPFA的双端队列优化

    7.11 Update 我做题的时候发现这样写会RE 因为在使用双端队列优化SPFA的时候 在将一个点加入队列的时候,如果队列已经空了 那么一旦出现dis[Q.front()]就会RE 可以这样修改 ...

  5. 最小生成树 prime &plus; 队列优化

    存图方式 最小生成树prime+队列优化 优化后时间复杂度是O(m*lgm) m为边数 优化后简直神速,应该说对于绝大多数的题目来说都够用了 具体有多快呢 请参照这篇博客:堆排序 Heapsort / ...

  6. BestCoder Round &num;89 02单调队列优化dp

    1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01  HDU 5944   水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...

  7. 单调队列优化DP,多重背包

    单调队列优化DP:http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列优化多重背包:http://blog.csdn ...

  8. 堆优化的Dijkstra

    SPFA在求最短路时不是万能的.在稠密图时用堆优化的dijkstra更加高效: typedef pair<int,int> pii; priority_queue<pii, vect ...

  9. bzoj1855&colon; &lbrack;Scoi2010&rsqb;股票交易--单调队列优化DP

    单调队列优化DP的模板题 不难列出DP方程: 对于买入的情况 由于dp[i][j]=max{dp[i-w-1][k]+k*Ap[i]-j*Ap[i]} AP[i]*j是固定的,在队列中维护dp[i-w ...

随机推荐

  1. Linux shell basic2 cat find tr

    Cat stands for concatenate. Case 1. When the text files have more blank lines, we want to remove the ...

  2. 灯塔&lpar;LightHouse&rpar;

    Description As shown in the following figure, If another lighthouse is in gray area, they can beacon ...

  3. OSX&colon; 真的吗?Mac OS X重大漏洞 改时钟获系统最高权限

    9月3日才注意到这个在8月28*登在英文网站9月1日在驱动之家的,关于OS X系统的sudo漏洞没有修补的新闻,今天才有时间成文上传. 这个sudo漏洞是在2013年2月27日被公布出来的,它的注册 ...

  4. web版仿微信聊天界面&vert;h5仿微信电脑端案例开发

    前几天开发了一款手机端h5仿微信聊天,人唯有不停学习才能进步,这段时间倒腾着整理了下之前项目,又重新在原先的那版基础上开发了一款仿微信聊天电脑端web版本,聊天页面又重新优化了多图预览.视频播放,右键 ...

  5. 最全的前端Git基础命令,看完保证你会!

    常见信息 master: 默认开发分支 origin:默认远程版本库 Head: 默认开发分支 Head^:Head 的父提交 创建新仓库 git init git init [project-nam ...

  6. jquery&period;cookie&period;js结合asp&period;net实现最近浏览记录

    一.html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  7. 【微信小程序】 引用公共js里的方法

    一个小程序页面由四个文件组成,一个小程序页面的四个文件具有相同路径与文件名,由此我们可知一个小程序页面对应着一个跟页面同名的js文件.可是当有些公共方法,我们想抽离出来成为一个独立公共的js文件.我们 ...

  8. spring通过配置xml文件集成quartz定时器

    概述 Spring为创建Quartzde Scheduler.Trigger和JobDetail提供了方便的FactoryBean类,以便能够在Spring容器中享受注入的好处. 此外,Spring还 ...

  9. Freebsd10&period;3(FreeBSD11 Beta1)使用手记

    Freebsd10.3(FreeBSD11 Beta1)使用手记 1.安装系统. 2.设置ssh2登录,并开启ftp. (1)编辑/etc/ssh/sshd_config文件,设置如下: Permit ...

  10. 一个loser的忏悔

    一直认为自己是世界的主角,从小意气用事,耽误了学业,现在才发现了自己的爱好,于是开始努力进阶. 愿不辜负自己的努力! 高中大学青葱旺盛的美好时期全部用在了感叹人生上,只能在30岁的年纪重新扛起学业,活 ...