首页 > 其他 > 详细

并查集

时间:2019-11-21 21:29:57      阅读:68      评论:0      收藏:0      [点我收藏+]

并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的运行时间(1~3秒)内计算出试题需要的结果,只能用并查集来描述。(选自百度)。

定义函数find

//路径压缩 int find(int k){

if(f[k]==k)return k;

return f[k]=find(f[k]);

}

通过

if(find(a)==find(b))
判断要查询的两个数a,b是否在同一集合。

并查集

原文:https://www.cnblogs.com/mak370/p/11908394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!