并查集-连通性问题

简介: 连通性问题比如随意给你两个点,让你判断它们是否连通?或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。以下面这组数据输入数据来说明 4 2 1 3 4 3 第一行告诉你,一共有4个点,2条路。

 

连通性问题

比如随意给你两个点,让你判断它们是否连通?或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。

以下面这组数据输入数据来说明 4 2 1 3 4 3 

第一行告诉你,一共有4个点,2条路。下面两行告诉你,1、3之间有条路,4、3之间有条路。那么整幅图就被分成了1-3-4和2两部分。只要再加一条路,把2和其他任意一个点连起来,就都连通了,那么这个这组数据的输出结果就是1(个相互独立的块)。

并查集

并查集由一个整数型的数组和两个函数构成。数组pre[]记录了每个点的前导点是什么,函数find是查找,join是合并。

  1. 数组下标是当前点的号码,值是前导点的号码,如果值和下标一样代表自己是根。
  2. 查找是找根用的,直到找到值和下标一样的根位置
  3. 合并就是在两个根之间修改其中一个根的值为另一个根的下标或者值。

路径压缩算法:最理想的情况就是所有点的前导点都是相同的根,一共就是两级结构。做法就是在查找时找到根之后把自身的值修改成根的下标。

 

目录
相关文章
|
8月前
|
算法
并查集,路径压缩
并查集,路径压缩
51 0
|
8月前
并查集。。
并查集。。
41 0
并查集及其应用
并查集及其应用
73 0
|
8月前
|
机器学习/深度学习
并查集(UnionFind)总结
并查集(UnionFind)总结
75 0
|
存储 算法 iOS开发
并查集详解及应用
并查集详解及应用
3859 0
|
存储 Python
【23. 并查集】
**用途**: - 将俩个集合合并 - 询问俩个元素是否在一个集合当中 **基本原理**: - 每个集合用一棵树来表示。树根的编号就是整个集合的编号,每个节点存储它的父节点,`p[x]`表示x的父节点。
129 0
【23. 并查集】

热门文章

最新文章