并查集
并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。
常涉及两个基本操作:
(1)合并两个不相交的集合
(2)判断两个元素是否属于同一个集合。
将N个不同元素分成一组不想交的集合。开始时,每个元素就是一个集合,然后按照规律将两个集合进行合并。
通过上述分析不难发现:
确定一共有几个集合?
观察有几个下标的值小于0,就有几个集合。
判断两个数据在不在同一个集合里面?
分别找出两个数据的根,如果是同一个根就是在一个集合里面。
学了并查集,那么它到底有什么应用呢?下面来看一个例题:
假如已知有n个人和m对好友关系(存于数字r),如果两个人是直接或间接的好友(好友的好友的好友),则认为他们同属于一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。
例如:n=5ÿ