博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 3040: 最短路(road)(堆优化dijkstra)
阅读量:2143 次
发布时间:2019-04-30

本文共 1581 字,大约阅读时间需要 5 分钟。

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

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
#include
#include
#include
using namespace std;#define LL long longLL 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
> q; q.push(make_pair(0, 1)); while(1) { while(q.empty()==0 && -bet[q.top().second]
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;}

转载地址:http://jimgf.baihongyu.com/

你可能感兴趣的文章
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
leetcode 130. Surrounded Regions
查看>>
【托业】【全真题库】TEST2-语法题
查看>>
博客文格式优化
查看>>
【托业】【新托业全真模拟】疑难语法题知识点总结(01~05)
查看>>
【SQL】group by 和order by 的区别。
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
Loadrunner之https协议录制回放报错如何解决?(九)
查看>>
python中xrange和range的异同
查看>>
列表、元组、集合、字典
查看>>
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>
【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
查看>>
【Pyton】【小甲鱼】异常处理:你不可能总是对的
查看>>
APP性能测试工具
查看>>