并查集判断是否有环存在

题目描述

在这里插入图片描述

思路分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码实现

package com.atguigu.disjointSet;public class djset {public static int VERTICES=6;public static void initialise(int parent[]){int i;for (i = 0; i < VERTICES; i++) {parent[i]=-1;}}public static int find_root(int x,int parent[]){int x_root=x;while (parent[x_root]!=-1){x_root=parent[x_root];}//出了循环说明已经找到父节点return x_root;}/*返回1表示union成功 合并成功,0表示合并失败*/public static int union_vertices(int x,int y,int parent[]){int x_root=find_root(x,parent);int y_root=find_root(y,parent);if(x_root==y_root){//x,y的父节点相同return 0;}else {parent[x_root]=y_root;return 1;}}public static void main(String[] args) {int parent[]=new int[VERTICES];int edges[][]={{0,1},{1,2},{1,3},{2,4},{3,4},{2,5}};initialise(parent);int i;for ( i = 0; i < edges.length; i++) {int x=edges[i][0];int y=edges[i][1];if(union_vertices(x,y,parent)==0){System.out.println("存在环");return;}}System.out.println("不存在环");}
}

压缩路径

package com.atguigu.disjointSet;public class djset {public static int VERTICES=6;public static void initialise(int parent[]){int i;for (i = 0; i < VERTICES; i++) {parent[i]=-1;}}public static int find_root(int x,int parent[]){int x_root=x;while (parent[x_root]!=-1){x_root=parent[x_root];}//出了循环说明已经找到父节点return x_root;}/*返回1表示union成功 合并成功,0表示合并失败*/public static int union_vertices(int x,int y,int parent[],int rank[]){int x_root=find_root(x,parent);int y_root=find_root(y,parent);if(x_root==y_root){//x,y的父节点相同return 0;}else {if(rank[x_root]>rank[y_root]){parent[y_root]=x_root;}else if(rank[y_root]>rank[x_root]){parent[x_root]=y_root;}else {parent[x_root]=y_root;rank[y_root]++;}}}public static void main(String[] args) {int parent[]=new int[VERTICES];int rank[]=new int[VERTICES];int edges[][]={{0,1},{1,2},{1,3},{2,4},{3,4},{2,5}};initialise(parent);int i;for ( i = 0; i < edges.length; i++) {int x=edges[i][0];int y=edges[i][1];if(union_vertices(x,y,parent,rank)==0){System.out.println("存在环");return;}}System.out.println("不存在环");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进入ASP .net mvc的世界

一、mvc执行流程&#xff1a; 启动mvc项目–>Global.asax–>App_Strat–>RouteConfig–>Controllers(控制器)–>View(视图)–Index.aspx 二&#xff1a;Controller&#xff0c;控制器的代码&#xff0c;包含动作方法和业务操作 三&#xff1a;View&#xff0c;…

Visual Studio 2017更新,侧重于提高稳定性

Microsoft已对其旗舰开发软件产品Visual Studio 2017&#xff08;VS2017&#xff09;的安装程序和设置引擎做了全新设计&#xff0c;意在能快速地部署更新到VS2017。VS2017的第一个命名版本更新在VS2017首发的一个月后就可用&#xff0c;这充分体现了这一全新设计的优势所在。 …

你还在Java8中使用循环语句吗?

转载自 你还在Java8中使用循环语句吗&#xff1f; Java 8中的新功能特性改变了游戏规则。对Java开发者来说这是一个全新的世界&#xff0c;并且是时候去适应它了。 在这篇文章里&#xff0c;我们将会去了解传统循环的一些替代方案。在Java 8的新功能特性中&#xff0c;最棒…

hadoop fs -ls / 出现WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform

Hadoop fs -ls / 出现WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable问题 配置完hadoop启动的时候出现如下警告信息&#xff1a; WARN util.NativeCodeLoader: Unable to load native-…

阅读器关闭时尝试调用Read无效时的解决方法

今天在写asp .netmvc的项目时&#xff0c;发现了个困扰我很久的问题&#xff0c;经过仔细研究终于解决了。 问题如下&#xff1a; 首先来看一下原来有问题的代码&#xff1a; public static SqlDataReader Excutereader(string sql,params SqlParameter [] param) {using (SqlC…

.NET或将引入类型类和扩展

类型类是另外一项正被考虑引入.NET未来版本的特性。在提案“外观和扩展&#xff08;Shapes and Extensions&#xff09;”中&#xff0c;该特性被称为外观&#xff0c;它们将大幅提升.NET泛型的能力。Mads Torgersen这样描述类型类&#xff1a; 接口抽象的是作为类型实例的对象…

成为更优秀的程序员:退后一步看问题

转载自 成为更优秀的程序员&#xff1a;退后一步看问题 一天&#xff0c;在工作中… Bug #3890 来自客户&#xff1a; 有个程序出现了错误&#xff0c;程序提示说“SpeedCalculator::compute()里出现了除零情况”。 请尽快修复&#xff01; 你打开SpeedCalculator.php&#…

JAVA生成随机数

方式一 Random rand new Random();for(int i0; i<10; i) {System.out.println(rand.nextInt(10) 1);}方式二 for (int i 0; i < 50; i) {arr[i](int)(100*Math.random());}

深夜福利, 小试linuxkit

前言 今天小编的朋友圈被DockerCon和linuxkit刷屏了&#xff0c;再不出来写点linuxkit的东东恐怕就要跟不上时代了。小编翻阅了N多的有关linuxkit的文章&#xff0c;发现绝大多数都是英文的讲解&#xff0c;小编本着对读者负责的态度决定先将linuxkit的文章翻译成中文&#xff…

HBase的hbase shell 详解

进入hbase命令行 ./hbase shell 显示hbase中的表 list 创建user表&#xff0c;里面包含info&#xff0c;date两个列族 create user,info,data create user,{NAME > info, VERSIONS > 5},{NAME > data , VERSIONS > 5 } 插入数据 puthbase> put ns1:t1, r1, c1, …

类的无参方法

一、方法&#xff1a; 1.组成&#xff1a;访问修饰符&#xff08;public&#xff09; 返回值类型&#xff08;void,String ,int&#xff09; 方法名&#xff08;采用驼峰命名法&#xff09;(){ //方法体 } eg:public String run(){ //方法体 return “快跑”; } 注意&#xff1…

这些保护Spring Boot 应用的方法,你都用了吗?

转载自 这些保护Spring Boot 应用的方法&#xff0c;你都用了吗&#xff1f; Spring Boot大大简化了Spring应用程序的开发。它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量&#xff0c;如果你已经习惯了Spring和大量XML配置&#xff0c;Spring Boot无疑是…

.NET Core 2.0及.NET Standard 2.0

.NET Core 2.0的发布时间&#xff0c;.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布。 .NET Core 2.0正式版本发布时间大约在Q3 2017发布&#xff0c;具体我估计大概在8月份左右。同时一起发布的也就是.NET Standard 2.0。 MilestoneRelease Date.…

路径、形状工具与选区

一、路径工具&#xff1a; 可以转换为选区或者使用涂颜色填充和描边的轮廓。 二、路径工具的功能&#xff1a; 1.绘制平滑线条 2.绘制矢量形状 3.勾选图像轮廓 4.选区互换 三、路径工具的分类&#xff1a; 1.路径选择工具&#xff1a;选择一个闭合的路径或者是一个独立存在的路…

zookeeper 屁民

视频链接&#xff1a;https://pan.baidu.com/s/1b_liTHLVCesMWqoZYokxyA 密码&#xff1a;wjgu 视频在 00:31:00–01:03:00之间 Zookeeper Server最基础的东西是什么呢&#xff1f;我想应该是Paxos了。所以本文会介绍Paxos以及它在ZK Server中对应的实现。 先说Paxos&#x…

Linux清理磁盘挂载点方法(亲测有效)

问题现象 Linux操作系统云服务器根目录空间占用率过高。例如&#xff0c;以图1为例&#xff0c;根目录空间占用率为96%。 根目录空间占用率过高 查询当前系统存在一个约42G 大小的文件access_log&#xff0c;这个文件应该是apache产生的访问日志文件&#xff0c;从日志大小来…

.NET程序在Linux容器中的演变

本文将首先讨论镜像的构建时间和启动时间&#xff0c;接着会将一个简单的.NET程序运行在基于容器的应用上&#xff0c;然后观察镜像大小的变化&#xff0c;最终缩短镜像的构建和加载时间。此外&#xff0c;代码优化是本文的另一个主题。 现在&#xff0c;.NET开发人员可以无障…

滤镜与通道

一、滤镜&#xff1a;在原有图像的基础上&#xff0c;产生许多离奇而炫目的效果的工具集合。 二、滤镜分为两个部分&#xff1a; 1.内置的滤镜 2.外挂滤镜 三、滤镜组&#xff1a; 1.渲染&#xff1a;可以在图像中创建三维形状&#xff0c;云彩图案和三维光照效果。 2.风格化&a…

Zookeeper 详讲(笔记)1

client发送request给follower,follower将request给leader&#xff0c;leader将proposal&#xff08;提议&#xff09;发送给所有的follower&#xff0c;follower进行投票&#xff0c;每一个follower返回一个ack给Leader&#xff0c;leader将commit发送给所有的follower进行更新…