随笔分类 -  2生成树

摘要:先用kruskal处理出一个最小生成树 对于非树边,倍增找出两端点间的最大边权-1就是答案 对于树边,如果它能被替代,就要有一条非树边,两端点在树上的路径覆盖了这条树边,而且边权不大于这条树边 这里可以树剖来做,但是不想用.. 如果先把非树边从小到大排序然后去覆盖树边,那么一条树边只需要被覆盖一次 阅读全文
posted @ 2018-10-18 16:32 Ressed 阅读(776) 评论(0) 推荐(0)
摘要:先kruskal求出一个最小生成树,然后对于每条非树边(a,b),从树上找a到b路径上最大的边,来把它替换掉,就是包含这条边的最小生成树 阅读全文
posted @ 2018-10-18 16:00 Ressed 阅读(318) 评论(0) 推荐(0)
摘要:由于有相同权值的边不超过10条的限制,所以可以暴搜 先做一遍kruskal,记录下来每个权值的边使用的数量(可以离散化一下) 可以证明,对于每个权值,所有的最小生成树中选择的数量是一样的、而且它们连成的连通块也是一样的 所以我们把每个权值的边分开暴搜所有可能的情况,最后再乘到一起就是答案 阅读全文
posted @ 2018-10-09 10:15 Ressed 阅读(195) 评论(0) 推荐(0)
摘要:按照边权排序建出kruskal重构树,每次就变成了先找一个权值<=x的最远的祖先,然后看这个子树的第k小。离散化一下,在dfs序上做主席树即可 而且只需要建叶节点的主席树 注意输出的是第k小点的高度值 阅读全文
posted @ 2018-09-20 16:25 Ressed 阅读(185) 评论(0) 推荐(0)
摘要:题意:给一张无向联通图,每条边有长度和高度,每次询问在高度大于p的边,从v点能到达的所有点到1号点的最短距离(强制在线) 首先dijkstra求出每个点到1号点的距离 易知:如果我按高度从高到低给边排序然后用kruskal的方法做出一棵生成树,那么在高度大于p的条件下,在原图中联通的两点在生成树中依 阅读全文
posted @ 2018-07-24 12:44 Ressed 阅读(748) 评论(0) 推荐(0)
摘要:题意:给一个联通图,求出不可替代的边,即存在于所有最小生成树中的边,的数量和它们边权之和 首先kruskal跑出一个最小生成树,枚举其中所有的边,若把这条边去掉以后再跑kruskal答案不是最小,则这条边就是不可替代的 复杂度:O(MlogM+N*N) 阅读全文
posted @ 2018-07-23 13:36 Ressed 阅读(194) 评论(0) 推荐(0)
摘要:题意:给R*C的房间,每个房间被左上-右下或右上-左下的墙分割为两个小房间,将分割移除有一定花费,问使所有小房间联通需要的最小花费 把每个房间分成左右(上下?)两个点,判一判,本来就联通的加零边,一个房间里的两个点间加花费的边,跑kruskal即可 阅读全文
posted @ 2018-07-23 13:10 Ressed 阅读(218) 评论(0) 推荐(0)