前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kruskal重构树入门

Kruskal重构树入门

作者头像
attack
发布2018-09-21 14:53:42
8760
发布2018-09-21 14:53:42
举报

今天写不完了,等明天再补吧

这个知识点好像咕咕咕了好长了。。趁还没退役赶紧补一下吧。。

前置知识

Kruskal算法

一定的数据结构基础(如主席树)

Kruskal重构树

直接bb好像不是很好讲,那就从这道题入手吧。

在Bytemountains有$N$座山峰,每座山峰有他的高度$h_i$。 有些山峰之间有双向道路相连,共$M$条路径,每条路径有一个困难值,这个值越大表示越难走. 现在有$Q$组询问,每组询问询问从点$v$开始只经过困难值小于等于$x$的路径所能到达的山峰中第$k$高的山峰,如果无解输出$-1$

首先,这是一张图(你在说大实话么)

对于一个点来说,经过困难值小于等于$x$的路径所能到达的点是一定的。

但是这和生成树有啥关系呢?

显然,若一个点能通过一条路径到达,那么我们走最小生成树上的边也一定能到达该节点。

这样我们把最小生成树建出来,就可以少考虑很多边了。

然而并没有什么卵用。。

现在我们需要做的,是找一种方法,能够维护出一个点能到达的点。

于是Kruskal重构树就诞生了。

它的思想是这样的:

在运行Kruskal算法的过程中,对于两个可以合并的节点$(x, y)$,断开其中的连边,并新建一个节点$T$,把$T$向$(x, y)$连边作为他们的父亲,同时把$(x, y)$之间的边权当做$T$的点权

这样我们得到了一个新的树,考虑它有什么性质。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今天写不完了,等明天再补吧
  • 前置知识
  • Kruskal重构树
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档