浅谈并查集

题目描述

小明终于忙玩了各种各样的课程,终于可以继续学习算法了。他在图论书上看到了树,树有许许多多特殊的性质。
小明一下子就喜欢上了这种特殊的树。
于是,他发明了自己的对于无向图的评分方法。
一个无向图的分数定义为,各个连通块是树的数量。现在给定一个n 个点m 条边的无向图,问在小明的评分方法下,分数为多少。
一个连通块是树,当且仅当边数比点数少1

输入

第一行两个整数n 和m,表示图的点数和边数。
第二行有m 对整数,u 和v 表示,结点u 和节点v 之间有边。
给出的无向图不存在重边。

输出

输出一行包括一个整数,表示无向图的评分,也就是树的数量。
样例输入
8 6 
1 2 
1 3 
2 4 
5 6 
6 7 
5 7 
样例输出
2

数据范围

20%的数据,1<=n<=2000100%的数据,1<=n<=100000,0<=m<=min(n*(n-1)/2,200000)

首先分析题目:只要不是环的图就是数.
对着样例画个图

1
2
3
4
5
6
7
8

所以只有2棵树(自环也不是树哦!)
这样我们只用在合并的时候判断祖先是否一致,如果一致便是环!
否者的话就将自己的祖先合并即可!

压缩路径
当然,单单直接合并祖先是不够的,有可能会在寻找时超时,例如它是一棵直线树

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值