dij最短路优先队列堆的时候,加边
不能用全局数组d[u]>d[rhs.u]。
这样后面会修改d[u]值然而本来里面的点顺序不该修改,却被修改了。
应该用栈还存进去的临时变量,比如d>rhs.d。
优先队列重载小于号'<'
struct Node {
int u,d,c;
bool operator<(const Node &rhs)const {
if(d!=rhs.d)
return d > rhs.d;
return c > rhs.c;
}
Node(int u_,int d_,int c_):u(u_),d(d_),c(c_){}
};
两种加边法:
struct Edge {
int u, v, d, c;
Edge(int u_,int v_,int d_,int c_):u(u_),v(v_),d(d_),c(c_){}
Edge(){}
};
Edge edge[100005*2];
void add(int u, int v, int d, int c) {
g[u].push_back(id);
g[v].push_back(id + 1);
id += 2;
edge[id-2]=Edge(u, v, d, c);
edge[id-1]=Edge(v, u, d, c);
}
struct Edge {
int u, v, d, c, next;
Edge(int u_,int v_,int d_,int c_,int next_):u(u_),v(v_),d(d_),c(c_),next(next_){}
Edge(){}
};
Edge edge[100005*2];
void add(int u, int v, int d, int c) {
edge[id] = Edge(u, v, d, c, head[u]);head[u] = id++;
edge[id] = Edge(v, u, d, c, head[v]);head[v] = id++;
}
dij最短路优先队列堆的时候,加边的更多相关文章
- c++优先队列(堆)
1.最小堆.最大堆 priority_queue<int,vector<int>,greater<int> > f; //最小堆(后面的数逐渐greater) pr ...
- AcWing 850. Dijkstra求最短路 II 堆优化版 优先队列 稀疏图
//稀疏图 点和边差不多 #include <cstring> #include <iostream> #include <algorithm> #include ...
- 最短路模板|堆优化Dijkstra,SPFA,floyd
Ⅰ:Dijkstra单源点最短路 1.1Dijkstra const int MAX_N = 10000; const int MAX_M = 100000; const int inf = 0x3f ...
- BZOJ-1922 大陆争霸 多限制、分层图最短路 (堆+dijkstra)
1922: [Sdoi2010]大陆争霸 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1154 Solved: 478 [Submit][Status ...
- Expedition---poj2431(优先队列-堆的实现)
题目链接:http://poj.org/problem?id=2431 题意:一辆卡车需要行驶 L 距离,车上油的含量为 P,在行驶的过程中有 n 个加油站 每个加油站到终点的距离是ai,每个加油站最 ...
- 【bzoj4152】【The Captain】最短路(堆优化)(浅尝ACM-B)
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62834538 Description 给定平面上 ...
- UVA 10801 Dij最短路(改模板)
题意:有n个电梯,目的地是第K层(起点是第0层),给出每个电梯的速度,以及每个电梯能到达的层数,如果中途需要换电梯的话,时间需要+60,求到达目的地的最短时间: 思路:Dij求最短路.如果是另一条路比 ...
- Vijos1404 遭遇战 最短路,dijkstra,堆
P1404遭遇战 标签:[显示标签] 背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分 ...
- Bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路 dijkstra,堆,A*,次短路
1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 969 Solved: 468[S ...
随机推荐
- P1003 铺地毯
水题 #include <bits/stdc++.h> using namespace std; const int maxn = 10005; int n; int x, y, i; s ...
- JS基础语法
1.注释语法://单行注释./*多行注释*/. 2.输出语法:{1.alert("要输出的字符串"):.alert(输出其类型): 2.confirm():弹出一个可以和用户交互 ...
- 【C】用我所学去讲C语言指针
很多人不敢讲C的指针,有些人讲不清,有些人怕讲错.初生牛犊不怕虎,就让我讲讲. 下面开始. 一.指针的定义 指针是内存单元的编号.内存单元是以字节为单位的.所以指针就是字节的编号. 比如我们的个人电 ...
- JavasScript判断输入框不为空
<form name="form1" method="POST" action="add.php"> <table wid ...
- Ubuntu 12.04+DarwinStreamingSrvr6.0.3 架设流媒体服务器
1.安装Ubuntu 12.04操作系统,网上很多教程.. 2.打开终端,下载darwin源代码DarwinStreamingSrvr6.0.3-Source.tar,补丁patch dss-6.0. ...
- Java实验五报告——TCP传输及加解密
一.实验内容 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者D ...
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication解决办法
mysqlnd是个好东西.不仅可以提高与mysql数据库通信的效率,而且也可以方便的设置一些超时.如,连接超时,查询超时.但是,使用mysqlnd的时候,有个地方需要注意.就是服务端的密码格式不能使用 ...
- [LeetCode]题解(python):035-Search Insert Position
题目来源 https://leetcode.com/problems/search-insert-position/ Given a sorted array and a target value, ...
- JS之Array.slice()方法
1.Array.slice(startIndex,endIndex); 返回由原始数组从startIndex到endIndex-1的元素构成的新数组; startIndex:默认值0,如果startI ...
- boost.compressed_pair源码剖析
意义 当compressed_pair的某一个模板参数为一个空类的时候将对其进行“空基类优化”,这样可以使得compressed_pair占用的空间比std::pair的更小. 参考如下代码: #in ...