并查集

并查集

  1. 1.      将两个集合合并
  2. 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  允许输入的字符串有空格

 

posted @ 2022-10-24 10:51  焦糖玛奇果  阅读(20)  评论(0)    收藏  举报