转自 "hwzzyr的博客" kruskal重构树 由于重构树中把原树的点权转换成为了新建节点的边权,这一过程是这样实现的。 首先对边排序 然后使用并查集辅助加边,每新建一条边时: 新建节点indexindex(编号从n+1n+1开始) 将原有两节点所在集合改为indexindex 将原有节点与in ...
分类:
其他好文 时间:
2018-10-28 16:15:41
阅读次数:
235
题目描述 给你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 < = 20,000)。 每个询问 ...
分类:
Web程序 时间:
2018-09-05 21:54:22
阅读次数:
181
3732: Network 题目:传送门 题解: 第一眼就看到最大边最小,直接一波最小生成树。 一开始还担心会错,问了一波肉大佬,任意两点在最小生成树上的路径最大边一定是最小的。 那么事情就变得简单起来了嘿嘿嘿,建棵树,直接在线LCA啊,用一个mx[i][j]记录i往上2^j这段区间的最大值。 代码 ...
分类:
Web程序 时间:
2018-03-23 21:13:00
阅读次数:
274
显然使A到B的最长边最小的路径一定在最小生成树上,否则一定可以使生成树更小。 求出原图的最小生成树,然后用倍增求路径上最大值就可以了。 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> ...
分类:
其他好文 时间:
2017-03-19 11:14:44
阅读次数:
348
最小生成树的性质 任意两点间最大边最小 不会写倍增系列= = View Code ...
分类:
Web程序 时间:
2016-11-05 17:44:04
阅读次数:
197
这是一道模板套模板的题目,只要会LCA和最小生成树就可以做,水题 直接先甩题目 Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N。 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,00 ...
分类:
其他好文 时间:
2016-10-02 21:28:30
阅读次数:
194
题意:给定一个无向图,然后求两点之间的路径中权值最大的边的最小值 正解:最小生成树+倍增lca 望着这道题10分钟之后感觉做不到一眼秒题,老老实实画图,结果发现我真是太弱了,居然没有发现满足题意的条件竟然是最小生成树的性质。。。 显然先构出最小生成树,其他的边是没有用的,可以删掉。 构出最小生成树之 ...
分类:
Web程序 时间:
2016-05-07 15:00:11
阅读次数:
201
给你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)。 每个询问的格式是:
分类:
Web程序 时间:
2016-03-20 19:35:47
阅读次数:
270
学了一早上倍增,感觉lca还是tarjan好写。poj1330 1 #include 2 #include 3 #include 4 #include 5 #define DEG 20//2^20 6 #define maxn 10010 7 using namespace std; 8 s...
分类:
其他好文 时间:
2015-08-14 21:04:02
阅读次数:
263
这貌似是13年的noip最后一道吧?、、、蒟蒻只会这种题呢、、、Kruskal求出MST,然后倍增就好了 1 /************************************************************** 2 Problem: 3732 3 Us...
分类:
Web程序 时间:
2014-12-13 10:49:50
阅读次数:
196