亲戚关系关系算法java程序_并查集1——查找亲戚关系
并查集:互不相交的集合
并查集的3种操作:
(1)Make_Set()
把每一个元素初始化为一个集合,初始化后的每一个元素的父节点是它本身
(2)Find_Set(int x)
查找一个元素所在的集合,关键在于寻找这个元素所在集合的祖先
(3)Union(int x, int y)
合并x和y所在的集合,一个集合的祖先指向另一个集合的祖先
题目:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。先输入10个人(编号从1-10)及7组亲戚关系,然后输入3组数据,问这三组数据是不是亲戚关系?
输入10 72 45 71 38 91 25 62 333 47 108 9输出YesNoYes
package com.java.study;
import java.util.Scanner;
public class UnionColl {
int [] father;
int [] rank;
public UnionColl(){}
private void Make_Set(){
for(int i = 0 ; i < father.length ; i++){
father[i] = i;//根据实际情况指定的父节点可变化
rank[i] = 0;//根据实际情况初始化秩也有所变化
}
}
private int Find_Set(int x){
if(x!=father[x]){
father[x] = Find_Set(father[x]);//将查找路径的所有节点都指向根节点
}
return father[x];
}
void Union(int x, int y){
int f1 = Find_Set(x);
int f2 = Find_Set(y);
if(f1!=f2){
father[f1] = f2;
}
}
public void go(){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
father = new int[n+1];
rank = new int[n+1];
Make_Set();
for(int i = 1; i <= m; i++){
int a = sc.nextInt();
int b = sc.nextInt();
int x = Find_Set(a);
int y = Find_Set(b);
Union(x,y);
}
int k = sc.nextInt();
for(int i = 1 ; i <= k ;i++){
int x = sc.nextInt();
int y = sc.nextInt();
if(Find_Set(x)==Find_Set(y))
System.out.println("Yes");
else
System.out.println("No");
}
}
public static void main(String[] args) {
UnionColl uc = new UnionColl();
uc.go();
}
}
亲戚关系关系算法java程序_并查集1——查找亲戚关系相关推荐
- 亲戚关系关系算法java程序_C++并查集亲戚(Relations)算法实例
本文实例讲述了C++并查集亲戚(Relations)算法.分享给大家供大家参考.具体分析如下: 题目: 亲戚(Relations) 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女 ...
- 亲戚关系关系算法java程序_亲戚换算(亲戚称谓计算器)
由于常年不在家,相信很多人在过年时候碰到眼熟的亲戚都不知道该怎么称呼了. 瞌睡有人送枕头,过年期间还真有人开发了一款"三姑六婆"亲戚称呼计算器,解了大家. 爸爸妈妈那一辈的哥哥,姐 ...
- 亲戚关系关系算法java程序_亲戚称呼计算器java代码
展开全部 计算器java代码62616964757a686964616fe58685e5aeb931333337386663import java.awt.BorderLayout; import j ...
- 第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++
第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++ 准备代码: 第一次编译: 显然需要先配置环境变量: 先找到java.exe和javac.exe所在的文件夹位置: 此电脑-& ...
- Java程序员面试题集(131-135)
Java程序员面试题集(131-135) 摘要:这部分内容准备重新发布为Java程序员面试题集(151-180),但这篇帖子仍然保留在这里.查看新内容请点击Java程序员面试题集(151-180) 1 ...
- 算法:程序设计之并查集
前言 之前一直都是听说并查集,感觉是一个神乎其技,狂拽酷炫.却没有想过在自己学习并查集之前,自已在解决问题的时候也能够想到一个和并查集异曲同工的方法.这个还是很愉快的. 版权说明 著作权归作者所有. ...
- 第一个算法项目 | JS实现并查集迷宫算法Demo学习
0 参考链接 并查集,不就一并和一查? 520,花了一夜给女朋友写了个走迷宫游戏 点击下载并查集迷宫算法JS代码 1 JS代码修改运行方法 首先下载的文件夹如下: 双击打开maze.html文件. 键 ...
- BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集 Description 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M( ...
- pat上写java程序_如何运行Java程序和设置CLASSPAT
导读: 如何运行JAVA和CLASSPATH环境变量的设置是学习和使用JAVA中最基本的问题,本不应在此赘述.但近来不少人在论坛上提出的问题却与此有关,我平时碰到的一些初学者也往往在这个问题上卡了壳, ...
- UML设计java程序_利用UML序列图设计Java应用程序详解
[IT168 技术文章] Java应用程序由许多类所构成,是Java实现面向对象应用程序的核心.类图主要描述Java应用程序中各种类之间的相互静态关系,如类的继承.抽象.接口以及各种关联.要利用UML ...
最新文章
- Original error was: DLL load failed: 找不到指定的模块。--解决办法
- 小游戏_猜数_JAVA
- GDCM:gdcm::UIComp的测试程序
- 解决开机POST提示Strike tne F1 key to continue,F2 to run the setup utility
- 容器为何物,为什么它对OpenStack很重要?
- sqlserver 字符串转化数值函数_Excel常见函数用法(TEXT函数)
- 【华为云技术分享】干货!!卷积神经网络之LeNet-5迁移实践案例
- oracle的dbcp工具类,DBCP数据源的使用
- rk3399_android7.1耳机拔插ADC检测
- 如何在IDEA中搭建SpringMVC?
- 自动发卡平台网站源码-带手机版 带多套商户模板
- iPad最新型笔刷,足足五种分类,几百款
- matlab画三维图像(plot3,mesh,surf)
- 测试质量保障体系的建立
- 用Java实现24点游戏
- 计算机动画原理课程设计选题,组成原理课程设计设计一台模型计算机.pdf
- 设计模式——仲裁模式
- python 字符串转字典的几种方法
- Python爬虫监控(邮件和钉钉)
- 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则
热门文章
- Prolog编程求解图搜索问题
- HITB 2020:二进制漏洞挖掘仍是会议主流方向
- pc安装android,在电脑上安装安卓的过程
- win10 Administrator账户被禁用怎么办?
- C++第2周项目2——读取数据到结构体数组
- 搜狗收录提交入口-搜狗网站批量提交方法
- Kotlin学习笔记八-数据代理类型,接口与抽象类
- 带左右箭头的图片滚动html,js实现图片上显示左右箭头类似翻页效果的代码
- 积分极限定理+勒贝格控制收敛定理+高数
- manjaro设置字体_Manjaro 20.03字体美化的2.5个级别