树
题目描述
小明终于忙玩了各种各样的课程,终于可以继续学习算法了。他在图论书上看到了树,树有许许多多特殊的性质。
小明一下子就喜欢上了这种特殊的树。
于是,他发明了自己的对于无向图的评分方法。
一个无向图的分数定义为,各个连通块是树的数量。现在给定一个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<=2000;
100%的数据,1<=n<=100000,0<=m<=min(n*(n-1)/2,200000)
首先分析题目:只要不是环的图就是数.
对着样例画个图
所以只有2棵树(自环也不是树哦!)
这样我们只用在合并的时候判断祖先是否一致,如果一致便是环!
否者的话就将自己的祖先合并即可!
压缩路径
当然,单单直接合并祖先是不够的,有可能会在寻找时超时,例如它是一棵直线树