dijkstra STL 堆优化
Code:
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn = 200000;
const int inf = 2147483647;
int head[maxn], to[maxn<<1], nex[maxn<<1],val[maxn<<1],cnt;
struct Node {
int dist, u;
Node(int dist, int u) :dist(dist), u(u) {}
bool operator<(Node v)const {
return v.dist < dist;
}
};
void addedge(int u,int v,int c){
nex[++cnt]=head[u],head[u]=cnt,to[cnt]=v,val[cnt]=c;
}
int done[maxn], d[maxn], n, m, s;
void dijkstra(){
memset(done, 0, sizeof(done));
memset(d, 0, sizeof(d));
priority_queue<Node>Q;
for (int i = 0; i < maxn; ++i)d[i] = inf;
d[s] = 0;
Q.push(Node(0, s));
while (!Q.empty())
{
int u = Q.top().u; Q.pop();
if (done[u])continue;
done[u] = 1;
for(int v=head[u];v;v=nex[v]){
if(d[u]+val[v]<d[to[v]]){
d[to[v]]=d[u]+val[v];
Q.push(Node(d[to[v]],to[v]));
}
}
}
}
int main()
{
//freopen("input.in","r",stdin);
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;++i){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c);
}
dijkstra();
for(int i=1;i<=n;++i) printf("%d ",d[i]);
return 0;
}
dijkstra STL 堆优化的更多相关文章
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...
- Dijkstra+优先队列 堆优化
关于堆优化 传统\(Dijkstra\),在选取中转站时,是遍历取当前最小距离节点,但是我们其实可以利用小根堆(STL的priority_queue)优化这个过程,从而大大降低复杂(\(O(V2+E) ...
- Dijkstra算法堆优化
转自 https://blog.csdn.net/qq_41754350/article/details/83210517 再求单源最短路径时,算法有优劣之分,个人认为在时间方面 朴素dijkstra ...
- Dijkstra及其堆优化
朴素Dijkstra #include<bits/stdc++.h> using namespace std; const int inf=9999999; bool book[105]; ...
- 洛谷 P4779 【dijkstra】+(堆优化)+(链式前向星) (模板题)
<题目链接> 题目描述 给定一个 N 个点, M 条有向边的带非负权图,请你计算从 S 出发,到每个点的距离. 数据保证你能从 S 出发到任意点. 输入格式: 第一行为三个正整数 N,M, ...
- POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...
- Dijkstra的堆优化
先附上一个例题:P3371 [模板]单源最短路径 一眼扫去,最短路... spfa可行,但是今天的主题是Dijkstra: #include<iostream> #include<a ...
- Dijkstra算法堆优化详解
DIJ算法的堆优化 DIJ算法的时间复杂度是\(O(n^2)\)的,在一些题目中,这个复杂度显然不满足要求.所以我们需要继续探讨DIJ算法的优化方式. 堆优化的原理 堆优化,顾名思义,就是用堆进行优化 ...
- 最短路-朴素版Dijkstra算法&堆优化版的Dijkstra
朴素版Dijkstra 目标 找到从一个点到其他点的最短距离 思路 ①初始化距离dist数组,将起点dist距离设为0,其他点的距离设为无穷(就是很大的值) ②for循环遍历n次,每层循环里找出不在S ...
随机推荐
- rsync来传输文件(可断点续传)
scp传文件的话如果出错就得重新来过, 用rsync可以实现断点上传的功能 大概就是这样用: rsync -P --rsh=ssh home.tar 192.168.205.34:/home/h ...
- iOS开发-Tools-CocoaPods
CocoaPods是什么? 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而 ...
- MetaSploit攻击实例讲解------社会工程学set攻击(kali linux 2016.2(rolling))(详细)
不多说,直接上干货! 首先,如果你是用的BT5,则set的配置文件是在 /pentest/exploits/set/set_config下. APACHE_SERVER=ONSELF_SIGNED_A ...
- C#~异步编程再续~你必须要知道的ThreadPool里的throw
问题依旧存在 之前写过相关文章异步编程的文章,本文主要还是一点补充,之前在IIS经常发w3wp进程无做挂了的情况,但一直没能找到真正的原因,而查找相关资料,找了一些相关的文章,如await和async ...
- CCS+C6678LE开发记录12:UIA组件的安装
在安装了CCS 6.0版本的IDE和最新版的MCSDK后似乎一切都很完美,但事实并非如此. 当我试图编译SDK附带的image_processing (IPC based) demo时出现如下错误: ...
- Java基础——protected访问修饰符探讨
Java基础——protected访问修饰符探讨 根据官方说法:(如图) protected修饰符是可以修饰其他包中的子孙类的,但是我做了个实验,结果发现了一个有趣的现象! 具体请往下看: packa ...
- Photoshop CC (2015.5) 2016.6 版已发布
Photoshop CC (2015.5) 2016.6 版已发布 adobe-cc-no-more-direct-download-links.html 不再有直接下载的升级包了,不开心 :( 下载 ...
- MySQL用户添加和分配权限
mysql数据库insertdelete服务器file mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口 ...
- mysql插入数据出现java.lang.NullPointerException
在写购物车持久层的时候,要进行测试的时候居然出现了空指针异常: 最后发现是测试类少了 @RunWith(SpringRunner.class)@SpringBootTest 如下是没改之前的测试类: ...
- 自己编写并发布一个Vue组件
自己编写并发布一个Vue组件 1. 几种开源协议的介绍 https://blog.csdn.net/techbirds_bao/article/details/8785413 2.开始编写组件 新建p ...