千家信息网

Java如何实现并查集

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Java如何实现并查集",在日常操作中,相信很多人在Java如何实现并查集问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java如何实现并查集"的疑惑
千家信息网最后更新 2026年11月02日Java如何实现并查集

这篇文章主要介绍"Java如何实现并查集",在日常操作中,相信很多人在Java如何实现并查集问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java如何实现并查集"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

题目

题目背景

若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。

思路

对于该题而言,考察的是并查集,也就是小怪兽逐个找上级领导的思路,指导找到最终的Boss停止下来,如果两个怪兽要打架,需要问一问他们的上级领导,领导再问领导,逐级向上,最终发现它们属于同一个Boss的部署的话就不能再打架了,这道题同样的思路,如果斗罗大陆的一开始白沉香不知道唐三是亲戚的话,他们就会先询问自己的祖辈,而白沉香通过她爷爷得知她和唐三有亲戚,那么他们就不会再打起来,而是会联盟,一起去打别的敌人,同样,我的亲戚是你,你的亲戚是她,那么我和她也就会是亲戚,就像老家里你堂哥是你亲戚,你堂哥和他姥爷是亲戚,那么你就和他姥爷是亲戚

find实现

这个find就是用来查找他们的上级的,初始化时小怪兽高兴坏了,认为自己就是自己的上司,我就是王,我就是Boss,这么想其实也并没有错,毕竟自己在井底,那么,就用数组pre[]来存他们的上一级,例如:pre[10]=6;那么就认为10的上级就是6,6的上级假设是4,4的上级加入是自己,也即是 pre[4]=4;这时为4的怪兽就理解了,原来自己的上级是自己,那自己就是王了,这时就找到了boss,回想刚刚说的,两个怪兽如果想要打架,就需要先问问各自的上级,如果上级再问上级直到问到他们属于同一个boss,这时它们就会微笑说,原来我们属于同一个领导,那么find就是用来找最终两个分队的怪兽最终的领导的

 public static int find(int x){        if(pre[x]==x)return x;//如果上级领导是自己,就返回自己        return pre[x]=find(pre[x]);//如果不是,就逐一进行访问上级,直到找到boss,这里相当于最终找到了boss,把boss赋值给pre[x]    }

join的实现

join是用来干嘛的呢?它是用来合并的,加入有两个大王,它们各自占山为王,势力不相上下,实力也不相上下,有一天发生变故,大王1就想和大王2进行合并,大王二琢磨着合并后谁当大王?不能让它当了大王,大王2于是就说合并后我来当大王,大王一显然会不同意,大王二说你来找我合并的,不同意也要同意,于是大王二当成了 大王,这时大王二掌握了所有的军队,包括大王一的,那么join就是用来选两个大王其中一个作为总大王的。

 public static void join(int x,int y){        int xx=find(x);//用find找到第一个大王        int yy=find(y);//找到第二个大王        if(xx!=yy){//如果不相等            pre[xx]=yy;//将其中一个大王统领第一个大王所有的军队        }

整体代码

import java.util.Scanner;public class test1 {    static  int []pre=new int[10000];//注意题目中范围    public static void main(String[] args) {        int n,m,p,x,y;        Scanner sc=new Scanner(System.in);        n=sc.nextInt();//n个人        m=sc.nextInt();//m对关系        p=sc.nextInt();//p询问关系        for(int i = 0; i < n; i++){            pre[i]=i;//初始化,自己的祖先是自己        }        for(int i = 0; i < m; i++){            x=sc.nextInt();            y= sc.nextInt();            join(x,y);//合并        }        for(int i = 0; i 

到此,关于"Java如何实现并查集"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

大王 上级 亲戚 就是 两个 怪兽 学习 思路 题目 不相上下 军队 堂哥 姥爷 更多 沉香 帮助 实用 高兴 接下来 上司 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 广州紫鲸互联网科技有限公司 深圳恒合互联网络科技有限公司 厦门中拓互联网络科技有限公司 互联网 科技 互联网科技博客 深圳互联网科技怎么样 互联网 科技馆 欧洲十大科技互联网公司 贵州叶脉互联网科技有限公司所属行业 宝灵互联网科技有限公司 未来五年的互联网科技 畅思互联网科技 乌鲁木齐新华智原互联网科技学校 阿里互联网科技企业 恒生互联网科技业指数调整周期 互联网企业科技类企业如何做账 风投北京互联网科技 广州梦谷互联网科技有限公司领导 互联网科技手机排行榜 互联网新科技 智慧科技互联网 重庆科技学院互联网 互联网科技公司的市场部门 消费医药和互联网科技 佛山市翊博互联网络科技有限公司 互联网科技如何创业 互联网时代的科技公司 下一代互联网重大应用科技园 网互联网络科技
0