首页 > 代码库 > 并查集压缩路径
并查集压缩路径
并查集压缩路径:先找到所有节点的最终的根节点,然后通过将所有不与根节点直接相连的并且父节点是根节点的节点直接接在根节点上面,从而减少查找时间,来达到时间节省的目的!
关于并查集寻找父节点的算法:主要分为两类:
一:通过递归求解。优点:代码较短,并且递归的过程中已经包含了压缩路径。缺点:数据较大的时候,容易超时,栈溢出,提交到的时候,出现RE的错误!
代码如下:
int find(int r) { return r==father[r]?r:find(father[r]); }二:通过循环来求解。缺点:需要自己单独添加路径压缩。优点:使用情况多,不再受数据大小的限制。
代码如下:
int find(int x) { int r=x,j; while(r!=father[r]) r=father[r];//经过循环之后r表示最终的根节点 //下面是压缩路径 j=x;//从当前位置开始寻找 while(r!=j) { int k=father[j]; father[j]=r; j=k;//从当前节点到根节点的路径上遍历,都将他们的父节点赋值为根节点 } }
另外:对于运用并查集的题目来说,不同的编程语言,运算时间也不同,(血的教训,TLE了好多次),就个人经验来说,做过的好几道题,都是G++提交超时,C++卡时间AC!
并查集压缩路径
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。