并查集
- 1. 将两个集合合并
- 2. 询问两个元素是否在一个集合当中
近乎O( 1 )的时间复杂度之内
每一个集合用树的形式来维护,根节点的编号代表这个集合,每一点存储父节点
然后询问在哪个集合时就一直返回父节点
问题1:如何判断树根 : if( p [x ] == x)
问题2:一直返回父节点,找树根
问题3:如何合并两个集合
P [ x ] 是 x的集合编号,P [ y ] 是 y的集合编号,p [ y ] =x
优化:
询问一个节点的根节点,一直返回父节点,找到之后,直接把这条路径是上的点都直接指向根节点,优化之后就几乎O( 1 )的时间
代码:
scanf 输入的是“i love you”,而输出的只有“i”。原因是scanf 遇到\n 和空格结束 ,也就是说,只要一“敲”空格,系统就认为当前的字符串已经结束,接下来输入的是下一个字符串
所有用字符串可以排除空格影响
get 允许输入的字符串有空格
标签:查集,空格,字符串,编号,集合,节点 From: https://www.cnblogs.com/lyhjzx/p/16820779.html