BZOJ3040:最短路——题解

https://www.lydsy.com/JudgeOnline/problem.php?id=3040

题意rt,使用pb_ds的堆解决本问题。

所以其实就是mark一下的。

不过有人确认过官方不能使用“using namespace __gnu_pbds;”

 

#include<cmath>
#include<queue>
#include<cstdio>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<ext/pb_ds/priority_queue.hpp>
using namespace std;
typedef long long ll;
typedef pair<ll,int>pii;
typedef __gnu_pbds::priority_queue<pii,greater<pii>,__gnu_pbds::pairing_heap_tag> heap;
#define fi first
#define se second
const int N=1e6+5;
const int M=1e7+5;
const ll INF=1e18;
inline int read(){int X=0,w=0;char ch=0;while(!isdigit(ch)){w|=ch=='-';ch=getchar();}while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X;
}
struct node{int to,nxt;ll w;
}e[M];
int n,m,c,cnt,head[N];
heap q;
heap::point_iterator id[N];
inline void add(int u,int v,ll w){e[++cnt].to=v;e[cnt].w=w;e[cnt].nxt=head[u];head[u]=cnt;
}
ll dis[N];
void dij(int s){for(int i=1;i<=n;i++)dis[i]=INF;dis[s]=0;id[s]=q.push(pii(0,s));while(!q.empty()){int u=q.top().se;q.pop();for(int i=head[u];i;i=e[i].nxt){int v=e[i].to;ll w=e[i].w;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;if(id[v]!=0)q.modify(id[v],pii(dis[v],v));else id[v]=q.push(pii(dis[v],v));}}}return;
}
int main(){n=read(),m=read();int t=read(),rxa=read(),rxc=read(),rya=read(),ryc=read(),rp=read();int x=0,y=0;for(int i=1;i<=t;i++){x=((ll)x*rxa+rxc)%rp;y=((ll)y*rya+ryc)%rp;int u=min(x%n+1,y%n+1),v=max(y%n+1,y%n+1);add(u,v,100000000-100*u);}for(int i=t+1;i<=m;i++){int u=read(),v=read(),w=read();add(u,v,w);}dij(1);printf("%lld\n",dis[n]);return 0;
}

 

+++++++++++++++++++++++++++++++++++++++++++

 +本文作者:luyouqi233。               +

 +欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

转载于:https://www.cnblogs.com/luyouqi233/p/9102882.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

39--打印从1到最大的n位数

1.题目描述 输入数字 n&#xff0c;按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3&#xff0c;则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n 1 输出: [1,2,3,4,5,6,7,8,9] 2.解题思路 class Solution {public int[] printNumbers(int n) {int end …

六.dbms_session(提供了使用PL/SQL实现ALTER SESSION命令)

1、概述 作用:提供了使用PL/SQL实现ALTER SESSION命令,SET ROLE命令和其他会话信息的方法 .2、包的组成 1&#xff09;、set_identifier说明&#xff1a;用于设置会话的客户ID号。语法&#xff1a;dbms_session.set_identifier(client_id varchar2);其中client_id指定当前会话的…

多线程官方教程

多线程编程指南Sun Microsystems, Inc.4150 Network CircleSanta Clara, CA95054U.S.A.文件号码819–7051–102006 年10 月版权所有2005 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA95054 U.S.A. 保留所有权利。本文档及其相关产品的使用、复制、分发和反编译…

iOS面试题(三)

1、Objective-C 中创建线程的方法是什么&#xff1f;如果在主线程中执行代码&#xff0c;方法是什么&#xff1f;如果想延时执行代码、方法又是什么&#xff1f; 线程创建有三种方法&#xff1a;使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSO…

Oracle中修改遇到“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Oracle 11g中想修改表名&#xff1a; rename ASSETPORJECT to ASSETPROJECT; 结果提示&#xff1a;ORA-00054: 资源正忙, 但指定以 NOWA…

NWCD

1.java jdk和jre 求和算法 时间复杂度和空间复杂度 restful风格 微服务 maven中央仓库 项目依赖jar包&#xff0c;换平台运行 同步和异步 设计模式–代理模式 2.linux 僵尸进程和孤儿进程 如何消除僵尸进程 僵尸进程能被kill调吗 磁盘性能分析iostat top free fdisk swap中a…

解决设置了background-size: cover; 但是图片在ios下显示不完整的问题

设置 background-size: 100% 99.9%&#xff1b; 转载于:https://www.cnblogs.com/kugeliu/p/9469207.html

Python学习之路20-数据模型

《流畅的Python》笔记。本篇是Python进阶篇的开始。本篇主要是对Python特殊方法的概述。1. 前言 数据模型其实是对Python框架的描述&#xff0c;它规范了这门语言自身构件模块的接口&#xff0c;这些模块包括但不限于序列、迭代器、函数、类和上下文管理器。不管在哪种框架下写…

String s1==s2面试题

这个程序运行的结果是什么&#xff1f;class StringTest1{public static void main(String[] args) {String s1"equal";String s2 "equal";if(s1s2){System.out.println("s1s2");}else{ System.out.println("s1!s2");} }} 输出 s1…

Vector:动态数组的使用和说明

摘自百度百科&#xff1a; 1. Vector 类在 java 中可以实现自动增长的对象数组; 创建了一个向量类的对象后&#xff0c;可以往其中随意地插入不同的类的对象&#xff0c;既不需顾及类型也不需预先选定向量的容量&#xff0c;并可方便地进行查找。对于预先不知或不愿预先定义数组…

Spring AOP 代理模式

记录几篇关于AOP & 代理模式 的博客&#xff0c;写的非常好&#xff0c;感谢作者分享&#xff01; Java中的代理模式——静态代理以及分析静态代理的缺点 Java中动态代理的两种方式JDK动态代理和cglib动态代理以及区别 Spring中的AOP以及切入点表达式和各种通知 Spring…

mongodb 多表查询

今天有一个业务涉及到mongodb的多表查询&#xff0c;大体记录下语句结构 db.table_a.aggregate([ {$lookup:{from:"table_b",localField:"userid",foreignField:"userid",as:"organization_doc"}}, //联表B{ $project:{ _id:1, card…

跨平台多线程编程

多线程介绍POSIX 1003.1-2001 定义了多线程编程的标准API。这个API就是广为人知的pthreads。它的目的在于为跨平台编写多线程程序提供便利。多线程程序的编写本文介绍了Linux 和 WIN32 平台下的多线程程序的编写方法Linux 系统对 pthreads 提供了良好的支持。一般地安装完Linux…

方法重载和方法重写

方法重载 &#xff08;1&#xff09; 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在&#xff0c;具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。 &#xff08;2&#xff09; Java的方法重载&#xff0c;就是在类中可以…

shell获取/etc/passwd中的用户名和id

核心思想&#xff1a;cut 关键词&#xff1a;head tail cut #!/bin/bash # get the information about /etc/passwd PATH/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATHfile"/etc/passwd" linewc -l $file | cut -d" "…

进度条控制(Windows 公共进度栏控件的功能)

MSDN&#xff1a;https://msdn.microsoft.com/zh-cn/library/sys15k39.aspx 构造 CProgressCtrl 对象&#xff1a;  CProgressCtrl(); 创建进度栏控件&#xff1a;  virtual BOOL Create( DWORD dwStyle(风格), const RECT& rect(位置大小), CWnd* pParentWnd(父窗体),…

本地浏览器缓存sessionStorage(临时存储) localStorage(长期存储)的使用

对浏览器来说&#xff0c;使用 Web Storage 存储键值对比存储 Cookie 方式更直观&#xff0c;而且容量更大&#xff0c;它包含两种&#xff1a;localStorage 和 sessionStorage sessionStorage&#xff08;临时存储&#xff09; &#xff1a;为每一个数据源维持一个存储区域&am…

HTML5的历史

HTML5和WHATWG[1] 2004年Opera的IanHickson&#xff08;现在Google工作&#xff09;发起的HTML新标签扩展以适应新的web应用&#xff0c;该发起遭到W3C的拒绝&#xff0c;而W3C凭空杜撰的作风引起了部分人的不满&#xff0c;来自Opera,Apple&#xff0c;以及Mozilla的代表开始…

B-TREE、B+TREE、数据库索引

推荐文章&#xff1a; B-Tree详解 SQL夯实基础&#xff08;五&#xff09;&#xff1a;索引的数据结构 MySQL B树索引和哈希索引的区别 感谢作者分享&#xff01;