首页 > 其他分享 >并查集

并查集

时间:2022-10-24 11:01:55浏览次数:46  
标签:查集 空格 字符串 编号 集合 节点

并查集

  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  允许输入的字符串有空格

 

标签:查集,空格,字符串,编号,集合,节点
From: https://www.cnblogs.com/lyhjzx/p/16820779.html

相关文章

  • 种类并查集学习笔记(CF1290C)
    这题一眼种类并查集(,虽然我最开始没看出来并且也不熟悉种类并查集好吧,其实是,我们不难发现,一个\(S_i\)最多只会对应两个\(m_i\)然后这两个\(m_i\)之间的关系是双向......
  • 【蓝桥杯】考前押题--并查集
    ......
  • AcWing1251 打击罪犯--并查集
    #include<bits/stdc++.h>#definepbpush_back#definefifirst#definesesecond#defineall(x)(x).begin(),(x).end()#defineSZ(x)(int)(x).size()usingnam......
  • 并查集的启发式合并
    背景:遇到一个题要用到,所以总结一下概述启发式合并的本质其实就是把size小的集合合并到size大的集合里面一般在需要查询并查集内元素或合并集合的时候可能会用到启发式......
  • 森林与并查集
    相关算法合并的时间复杂度查找的时间复杂度Quick-Find算法O(N)O(1)Quick-Union算法O(lgN)~O(N)O(lgN)~O(N)Weighted按质优化O(lgN)O(lgN)路径压......
  • Codeforces Round #747 (Div. 2) D // 扩展域并查集
    题目来源:CodeforcesRound#747(Div.2)D-TheNumberofImposters题目链接:Problem-D-Codeforces题意有\(n\)个人,每个人拥有\(imposter\)或\(crewmate\)的身份......
  • P3402 可持久化并查集
    P3402通过主席树维护不同版本的并查集,注意要采用按秩合并的方式,路径压缩可能会爆。1#include<bits/stdc++.h>2usingnamespacestd;3constintN=3e5+10;......
  • 并查集应用 matlab
    ​有lun文和源码群 1160391469并查集是一种用来管理分组情况的数据结构,可以高效的查询元素a,元素b是否来自于一组。并且可以合并元素a和元素b所在的组。虽然并查集可以......
  • CF1681F. Unique Occurrences (可撤销并查集, 分治)
    https://codeforces.com/contest/1681/problem/F题意:给5e5节点的树,问所有路径的贡献和,一条路径的贡献指路径上上只出现一次的边权的个数。思路:对于每种边权的贡献:对于边......
  • LeetCode 15 - 并查集
    所谓并查集,是指支持集合的合并和查询操作的数据结构。合并:将两个集合合并为一个。查询:查询某个元素属于哪个集合,通常是返回集合内的一个代表元素(例如二叉树的所有结点可......