[bzoj5415]归程
1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 400005
4 struct ji1{
5 int x,y,z;
6 bool operator < (const ji1 &k)const{
7 return z>k.z;
8 }
9 }e[N];
10 struct ji2{
11 int nex,to,len;
12 }edge[N<<1];
13 struct ji3{
14 int k,d;
15 bool operator < (const ji3 &x)const{
16 return d>x.d;
17 }
18 };
19 priority_queue<ji3>q;
20 int T,E,n,m,x,y,z,w,ans,head[N],d[N],vis[N],v[N],ls[N],rs[N],f[N][21];
21 int find(int k){
22 if (k==f[k][0])return k;
23 return f[k][0]=find(f[k][0]);
24 }
25 void add(int x,int y,int z){
26 edge[E].nex=head[x];
27 edge[E].to=y;
28 edge[E].len=z;
29 head[x]=E++;
30 }
31 void dij(){
32 for(int i=2;i<=n;i++)d[i]=2e9;
33 memset(vis,0,sizeof(vis));
34 q.push(ji3{1,0});
35 while (!q.empty()){
36 int k=q.top().k;
37 q.pop();
38 if (vis[k])continue;
39 vis[k]=1;
40 for(int i=head[k];i!=-1;i=edge[i].nex){
41 int v=edge[i].to;
42 if (d[v]>d[k]+edge[i].len)q.push(ji3{v,d[v]=d[k]+edge[i].len});
43 }
44 }
45 }
46 void dfs(int k){
47 for(int i=1;i<=20;i++)f[k][i]=f[f[k][i-1]][i-1];
48 if (k<=n)return;
49 f[ls[k]][0]=f[rs[k]][0]=k;
50 dfs(ls[k]);
51 dfs(rs[k]);
52 }
53 int query(int k,int w){
54 for(int i=20;i>=0;i--)
55 if (w<v[f[k][i]])k=f[k][i];
56 return d[k];
57 }
58 int main(){
59 scanf("%d",&T);
60 while (T--){
61 scanf("%d%d",&n,&m);
62 memset(head,-1,sizeof(head));
63 E=ans=0;
64 for(int i=1;i<=m;i++){
65 scanf("%d%d%d%d",&x,&y,&z,&w);
66 add(x,y,z);
67 add(y,x,z);
68 e[i]=ji1{x,y,w};
69 }
70 dij();
71 for(int i=1;i<2*n;i++)f[i][0]=i;
72 sort(e+1,e+m+1);
73 for(int i=1;i<=m;i++){
74 x=find(e[i].x);
75 y=find(e[i].y);
76 if (x==y)continue;
77 v[++n]=e[i].z;
78 d[n]=min(d[x],d[y]);
79 ls[n]=x;
80 rs[n]=y;
81 f[x][0]=f[y][0]=n;
82 }
83 n=n/2+1;
84 dfs(2*n-1);
85 scanf("%d%d%d",&m,&z,&w);
86 for(int i=1;i<=m;i++){
87 scanf("%d%d",&x,&y);
88 printf("%d\n",ans=query((x+z*ans-1)%n+1,(y+z*ans)%(w+1)));
89 }
90 }
91 }
[bzoj5415]归程的更多相关文章
- BZOJ5415[Noi2018]归程——kruskal重构树+倍增+堆优化dijkstra
题目描述 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个 n 个节点.m 条边的无向连通图(节点的编号从 1 至 n).我们依次用 l,a 描述一条边的长度.海 ...
- 【BZOJ5415】【NOI2018】归程(克鲁斯卡尔重构树)
[NOI2018]归程(克鲁斯卡尔重构树) 题面 洛谷 题解 我在现场竟然没有把这道傻逼题给切掉,身败名裂. 因为这题就是克鲁斯卡尔重构树的模板题啊 我就直接简单的说一下把 首先发现答案就是在只经过海 ...
- BZOJ5415 [NOI2018] 归程
今天也要踏上归程了呢~(题外话 kruskal重构树!当时就听学长们说过是重构树辣所以做起来也很快233 就是我们按照a建最大生成树 这样话呢我们就可以通过生成树走到尽量多的点啦 然后呢就是从这个子树 ...
- BZOJ5415:[NOI2018]归程(可持久化并查集,最短路)
Description Input Output Sample Input1 14 31 2 50 12 3 100 23 4 50 15 0 23 02 14 13 13 2 Sample Outp ...
- 并不对劲的bzoj5415:loj2718:uoj393:p4768:[NOI2018]归程
题目大意 \(n\)(\(n\leq2*10^5\))个点,\(m\)(\(m\leq4*10^5\))条边的图,每条边有海拔\(a_i(a_i\leq10^9)\).长度\(l_i(l_i\leq1 ...
- 【BZOJ5415&UOJ393】归程(Kruskal重构树,最短路)
题意:From https://www.cnblogs.com/Memory-of-winter/p/11628351.html 思路:先从1开始跑一遍dijkstra,建出kruskal重构树之后每 ...
- LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增)
LOJ2718 BZOJ5415 洛谷P4768 Rank3+Rank1无压力 BZOJ最初还不是一道权限题... Update 2019.1.5 UOJ上被hack了....好像是纯一条链的数据过不 ...
- LG4768 [NOI2018]归程
题意 题目背景 本题因为一些原因只能评测16组数据. 剩下的四组数据:https://www.luogu.org/problemnew/show/U31655 题目描述 本题的故事发生在魔力之都,在这 ...
- [NOI2018]归程 kruskal重构树
[NOI2018]归程 LG传送门 kruskal重构树模板题. 另一篇文章里有关于kruskal重构树更详细的介绍和更板子的题目. 题意懒得说了,这题的关键在于快速找出从查询的点出发能到达的点(即经 ...
随机推荐
- 基于python的pixiv爬虫
基于python的pixiv爬虫 1.目标 在和朋友吹逼过程中,聊到qq群机器人,突发奇想动手做一个p站每日推荐色图的色图机,遂学习爬虫. 目标: 批量下载首页推荐色图. 由于对qq机器人不熟,先利用 ...
- Pandas高级教程之:时间处理
目录 简介 时间分类 Timestamp DatetimeIndex date_range 和 bdate_range origin 格式化 Period DateOffset 作为index 切片和 ...
- PAT (Basic Level) Practice (中文)1017 A除以B (20分)
1017 A除以B (20分) 本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: 输入在一 ...
- C++ 与 Visual Studio 2019 和 WSL
Visual Studio 使用 C++ 的 Linux 开发(WSL) https://devblogs.microsoft.com/cppblog/c-with-visual-studio-201 ...
- 【数据结构与算法Python版学习笔记】基本数据结构——列表 List,链表实现
无序表链表 定义 一种数据项按照相对位置存放的数据集 抽象数据类型无序列表 UnorderedList 方法 list() 创建一个新的空列表.它不需要参数,而返回一个空列表. add(item) 将 ...
- 【数据结构与算法Python版学习笔记】图——强连通分支
互联网 我们关注一下互联网相关的非常巨大图: 由主机通过网线(或无线)连接而形成的图: 以及由网页通过超链接连接而形成的图. 网页形成的图 以网页(URI作为id)为顶点,网页内包含的超链接作为边,可 ...
- springcloud(二) 微服务架构编码构建
微服务架构编码构建 1 基础知识 1.1 版本 2 微服务cloud整体聚合父工程Project 2.1 new project 2.2 字符编码设置 utf-8 2.3 pom.xml 2.4 父工 ...
- Java:常用的容器小记
Java:常用的容器小记 对 Java 中的 常用容器,做一个微不足道的小小小小记 容器类概述 常见容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 M ...
- BUAA2020软工作业(一)——谈谈我和计算机的缘分
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...
- OO--第三单元规格化设计 博客作业
OO--第三单元规格化设计 博客作业 前言 第三单元,我们以JML为基础,先后完成了 PathContainer -> Graph -> RailwaySystem 这是一个递进的过程,代 ...