数据结构【并查集】解决朋友圈问题

首先我们先来看一个栗子:
朋友圈问题:
1、已知,有n个人和m对好友关系(存于一个集合r中)
2、如果两个人是直接的或者间接的好友(好友的好友的好友。。。),那么他们属于一个集合,就是一个朋友圈里的。
3、写出程序,求这n个人中一共有多少个朋友圈。
例如:
n=5,m=3;
r={ {1,2},{2,3},{4,5}};
因为集合{1,2}和集合{2,3}中有共同的朋友2,所以1,2,3属于同一个朋友圈,4和5与其它集合没有共同元素,所以4和5属于一个朋友圈。

那么怎么解决这个问题呢?
在之前我们学习了哈希表,所以很容易想到用哈希表来解决这个问题,具体解法如下所示:

这里写图片描述
哈希表虽然可以解决这类问题,但是当关系变得复杂点就十分容易出错,而且实现起来比较复杂,那有没有更好的方法呢,就是今天所要描述的并查集。

1、并查集

并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。并查

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值