BZOJ 3732: Network Kruskal 重构树】的更多相关文章

kruskal重构树 Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1-N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000). 现在有 K个询问 (1 < = K < = 15,000). 每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少? Input 第一行: N, M, K. 第2..…
模板题,练练手~ Code: #include <cstdio> #include <algorithm> #define N 80000 #define setIO(s) freopen(s".in","r",stdin) using namespace std; namespace tree { int hd[N],to[N],nex[N],edges; int fa[N],top[N],siz[N],dep[N],son[N]; voi…
Kruskal重构树裸题, Sunshine互测的A题就是Kruskal重构树,我通过互测了解到了这个神奇的东西... 理解起来应该没什么难度吧,但是我的Peaks连WA,,, 省选估计要滚粗了TwT #include<cstdio> #include<cstring> #include<algorithm> #define for1(i,a,n) for(int i=(a);i<=(n);i++) #define for2(i,a,n) for(int i=(a…
题意 Link 给出一张$n$个点的无向图,每次询问两点之间边权最大值最小的路径 $n \leqslant 15000, m \leqslant 30000, k \leqslant 20000$ Sol 很显然答案一定在最小生成树上,但是此题还有一个更为玄学的做法—Kruskal重构树 它是在Kruskal算法上改进而来的. 算法流程: 对于此题来说,将边权从小到大排序 用并查集维护两点的联通性,若祖先不相同,那么新建一个节点,权值为边权.左右儿子分别为两个点 这样建出来的树,我们称之为Kru…
题目大意:给定一个n个点m条边的无向连通图.k次询问两点之间全部路径中最长边的最小值 NOIP2013 货车运输.差点儿就是原题...仅仅只是最小边最大改成了最大边最小.. . 首先看到最大值最小第一反应二分答案 可是二分答案O(kmlogn)明显做不了 这里我们考虑最小生成树 先生成一棵最小生成树,然后每次询问利用倍增LCA求出路径上的最大权值就可以 本蒟蒻竟然把LCA写挂了... 并且例子还过了... 伤不起啊... 90%达成 剩下一道刷点啥呢... #include<cstdio> #…
3732: Network Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2812  Solved: 1363[Submit][Status][Discuss] Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000). 现在有 K个询问…
题面:https://www.lydsy.com/JudgeOnline/problem.php?id=3732 题解:Kruskal重构树板子 代码: #include<cstdio> #include<algorithm> #include<vector> using namespace std; inline int rd(){ ,f=; char c=getchar(); ; c=getchar();} +c-'; c=getchar();} return f*…
[题解] 首先,我们可以发现,A到B的所有路径中,最长边的最小值一定在最小生成树上.我们用Kruskal最小生成树时,假设有两个点集U,V,若加入一条边w(u,v)使U,V联通,那么w就是U中每个点到V中每个点的路径上的最长边.因为我们每次在可选的w中选择了最小的,所以可以满足最长边最短的要求. 我们可以做kruskal,当A与B恰好连通时,当前加入的边w就是A中的每个点到B中的每个点的最长边. 但这种做法在本题中似乎不可行..因为本题中询问有很多组,效率上有问题(或者是我太傻了QAQ 其实也可…
今天学了Kruskal重构树,似乎很有意思的样子~ 先看题面: BZOJ 题目大意:$n$ 个点 $m$ 条无向边的图,$k$ 个询问,每次询问从 $u$ 到 $v$ 的所有路径中,最长的边的最小值. $1\leq n\leq 15000,1\leq m\leq 30000,1\leq k\leq 20000$. 我相信你们看见这题的想法和我一样: 货车运输!最小生成树上LCA一下就行了!时间复杂度 $O(m\log m+n\log n+k\log n)$.(这里LCA用倍增.树链剖分复杂度是多…
3551: [ONTAK2010]Peaks加强版 题意:带权图,多组询问与一个点通过边权\(\le lim\)的边连通的点中点权k大值,强制在线 PoPoQQQ大爷题解传送门 说一下感受: 容易发现一定选最小生成树上的边,然后用到了一个神奇的东西 Kruskal重构树 进行Kruskal过程中,每条边用一个点代替,左右儿子分别是连的两个点的当前的父亲 这样就形成了一棵树,叶子都是原图上的点,其他都是原图上的边 深度越小的点对应的边权值越大 两点路径上的权值不变 这样的话,与一个点通过权值\(\…