3040: 最短路(road)

Time Limit: 60 Sec  Memory Limit: 200 MB
Submit: 2811  Solved: 933
[Submit][Status][Discuss]

Description

N个点,M条边的有向图,求点1到点N的最短路(保证存在)。
1<=N<=1000000,1<=M<=10000000

Input

第一行两个整数N、M,表示点数和边数。
第二行六个整数T、rxa、rxc、rya、ryc、rp。

前T条边采用如下方式生成:
1.初始化x=y=z=0。
2.重复以下过程T次:
x=(x*rxa+rxc)%rp;
y=(y*rya+ryc)%rp;
a=min(x%n+1,y%n+1);
b=max(y%n+1,y%n+1);
则有一条从a到b的,长度为1e8-100*a的有向边。

后M-T条边采用读入方式:
接下来M-T行每行三个整数x,y,z,表示一条从x到y长度为z的有向边。

1<=x,y<=N,0<z,rxa,rxc,rya,ryc,rp<2^31

Output

一个整数,表示1~N的最短路。

Sample Input

3 3
0 1 2 3 5 7
1 2 1
1 3 3
2 3 1

Sample Output

2

堆优化dijkstra模板题,不过很卡内存

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
#define LL long long
LL bet[1000005], len[10000005];
int cnt, node[10000005], nxt[10000005], head[1000005];
void Add(int x, int y, LL z)
{node[++cnt] = y;nxt[cnt] = head[x];head[x] = cnt;len[cnt] = z;
}
void Dij()
{int i, v, now;memset(bet, 10, sizeof(bet));bet[1] = 0;priority_queue<pair<LL, int> > q;q.push(make_pair(0, 1));while(1){while(q.empty()==0 && -bet[q.top().second]<q.top().first)q.pop();if(q.empty())break;now = q.top().second;q.pop();for(i=head[now];i;i=nxt[i]){v = node[i];if(bet[v]>bet[now]+len[i]){bet[v] = bet[now]+len[i];q.push(make_pair(-bet[v], v));}}}
}
int main(void)
{int i, n, m;LL T, rxa, rxc, rya, ryc, rp, x, y, z, a, b, l;cnt = x = y = z = 0;scanf("%d%d", &n, &m);scanf("%lld%lld%lld%lld%lld%lld", &T, &rxa, &rxc, &rya, &ryc, &rp);for(i=1;i<=T;i++){x = (x*rxa+rxc)%rp;y = (y*rya+ryc)%rp;a = min(x%n+1, y%n+1);b = max(y%n+1, y%n+1);l = (LL)1e8-100*a;Add(a, b, l);}memset(head, 0, sizeof(head));for(i=T+1;i<=m;i++){scanf("%lld%lld%lld", &x, &y, &z);Add(x, y, z);}Dij();printf("%lld\n", bet[n]);return 0;
}

bzoj 3040: 最短路(road)(堆优化dijkstra)相关推荐

  1. dij算法堆优化_BZOJ 3040 最短路(road) 堆优化Dijkstra | 学步园

    题目大意:最短路. 思路:最短路. 贴一份比较高效的堆优化Dij模板吧. CODE: #include #include #include #include #define _MAX 1000010 ...

  2. AcWing 850. Dijkstra求最短路 II(堆优化dijkstra)

    题目链接 : 点击查看 题目描述 : 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值. 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点, ...

  3. BZOJ 2118 墨墨的等式 堆优化Dijkstra

    题目大意:给定nn个物品,每个物品有一个非负价值,问[L,R][L,R]区间内有多少价值可以被凑出来 好题!!! 如果物品数量可以为负,显然求个gcdgcd就行了 现在物品数量必须非负 任选一个ai& ...

  4. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

  5. HDU1535 Invitation Cards(链式前向星+堆优化dijkstra)[C++]

    目录 题目及翻译 题面 输入 输出 输入样例 输出样例 题目思路 注意事项 AC代码 C++ 题目及翻译 题面 In the age of television, not many people at ...

  6. 【bzoj2259】[Oibh]新型计算机 堆优化Dijkstra

    题目描述 Tim正在摆弄着他设计的"计算机",他认为这台计算机原理很独特,因此利用它可以解决许多难题.  但是,有一个难题他却解决不了,是这台计算机的输入问题.新型计算机的输入也很 ...

  7. 【bzoj4070】[Apio2015]雅加达的摩天楼 set+堆优化Dijkstra

    题目描述 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼. 有 M 只叫做 "doge&q ...

  8. 重返天梯-L3-028 森森旅游 (30 分) (堆优化dijkstra+multiset)

    题目描述 重返天梯-L3-028 森森旅游 (30 分)原题链接 森森决定从 1 号城市出发,到 n 号城市去.他打算在出发前准备一些现金,并在途中的某个城市将剩余现金 全部 换成旅游金后继续旅游,直 ...

  9. PAT甲级1131 Subway Map (30分):[C++题解]堆优化dijkstra、单源最短路、地铁地图、巧妙地建图套dijkstra模板!!

    文章目录 题目分析 题目链接 题目分析 原题: 来源:acwing 分析: 建图:所有能走到的点之间建立一条边,比如下面一条地铁线路有4站,它们是相通的,两两之间建一条边,边权是经过的站点数. 下面考 ...

最新文章

  1. 花钱参加UI设计培训值得吗?
  2. IntelliJ IDEA 配置JDK出现The selected directory is not a valid home for JDK
  3. 本机镜像仓库base64解密
  4. Java 8开发的4大顶级技巧
  5. JavaScript 和 Java 有关系吗?
  6. 不是外部命令也不是可运行程序_手机运行内存4G和6G有什么不同?差别不是一般大...
  7. [Python + PyQt5] 均匀平面波的入射、反射及透射的仿真实验
  8. 计算机科学技术编程基础教程
  9. xp无法访问win7计算机提示无权限,解决WinXP无法访问Win7文件问题
  10. 50步带你在windows PC上创建属于自己的虚拟机(一)
  11. vue中使用v-if出现闪现然后消失
  12. 许晓斌_Maven实战(六)——Gradle,构建工具的未来?
  13. 阿里开发规约之编程规约(4)
  14. img标签图片404异常捕获返回默认图片
  15. 消失的信用卡(2)——0-days
  16. 深度哲学:王阳明心学精髓
  17. 【模电实验】【验证性实验——基本差动放大电路实验】
  18. 怎么样在Linux上使用AppImage?
  19. 计算机课gif,信息技术五年级下册第7课 认识GIF动画教学设计及反思
  20. java 验证手机号格式_java 校验手机号格式

热门文章

  1. python教程推荐-关于推荐系统的详细介绍
  2. python办公自动化案例-Python实战:自动化办公:Python 自动整理 Excel 表格
  3. python入门指南-Python 30分钟入门指南
  4. 语音识别电路设计图集锦 - 嵌入式类电子电路图 - 电子发烧友网
  5. 语音识别技术是什么_语音识别技术应用领域介绍
  6. @JsonSerialize的使用
  7. PUT与POST的相同点和不同点
  8. c语言运行出现-1 j,c语言中,y[ j ] = -1什么意思?
  9. php 钉钉 免登,免登的正确使用方式
  10. python中惩罚的代码_如何只为在python中使用的实现支付依赖惩罚?