当前位置: 首页 > wzjs >正文

企业管理系统官网江苏搜索引擎优化公司

企业管理系统官网,江苏搜索引擎优化公司,wordpress s.w.org,大型网站建设费用并查集的核心思想 并查集主要由两个操作构成: Find:查找某个元素所在集合的根节点。并查集的特点是,每个元素都指向它自己的父节点,根节点的父节点指向它自己。查找过程中可以通过路径压缩来加速后续的查找操作,即将路…

并查集的核心思想

并查集主要由两个操作构成:

  • Find:查找某个元素所在集合的根节点。并查集的特点是,每个元素都指向它自己的父节点,根节点的父节点指向它自己。查找过程中可以通过路径压缩来加速后续的查找操作,即将路径上所有节点直接指向根节点。

  • Union:将两个集合合并。如果两个元素属于不同的集合,我们将它们的集合合并起来。为了提高效率,我们可以使用按秩合并(将树较矮的集合合并到树较高的集合下)。

问题描述

在这里插入图片描述

思路分析

在这个问题中,我们可以将每个人视为一个节点,朋友关系视为连通关系,判断两个人是否是朋友其实就是判断他们是否属于同一组。通过并查集,我们可以高效地实现这两种操作:合并操作(Union)和查找操作(Find)。

  1. 查找操作:对于一个给定的节点,我们需要找到它的根节点,也就是它所在集合的代表元素。通过路径压缩的技巧,我们能够在查找过程中将路径上的所有节点直接指向根节点,从而减少后续查询的时间复杂度。

  2. 合并操作:当两个节点属于不同的集合时,我们需要将它们合并为一个集合。为了保证合并操作的效率,我们使用了按秩合并的策略,即将树矮的集合合并到树高的集合下,这样可以尽可能减少树的高度,提高查询效率。

解决步骤

  1. 初始化:首先我们创建一个大小为 n+1 的数组 parent,用于存储每个节点的父节点。在初始化时,每个节点的父节点都指向自己,表示每个节点是独立的。

  2. 操作解析

    • 对于 op == 1 的操作,表示将两个节点 xy 连接成一个集合。我们通过调用 union(x, y) 来合并它们的集合。
    • 对于 op == 2 的操作,表示查询两个节点 xy 是否属于同一集合。我们通过调用 find(x)find(y) 来查询它们的根节点,如果根节点相同,则表示它们是朋友关系。
  3. 路径压缩与按秩合并

    • find 操作中,我们使用了路径压缩技术。每次查找时,我们都将路径上的所有节点直接指向根节点,这样可以有效减少查找时的时间复杂度。
    • union 操作中,我们使用按秩合并的策略,通过比较两个集合的大小,将较小的集合合并到较大的集合中,从而保证了合并操作的效率。

代码:

import java.util.Scanner;// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {private static int[] parent;public static void main(String[] args) {//思想:维护一个数组将每个元素的朋友记录在里面,一个查找函数,一个合并函数Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();parent = new int[n + 1];// 初始化,每个节点的父节点指向自己for (int i = 1; i <= n; i++) {parent[i] = i;}for (int i = 0; i < m; i++) {int op = sc.nextInt();int x = sc.nextInt();int y = sc.nextInt();if (op == 1) {union(x, y);} else {System.out.println(find(x) == find(y) ? "YES" : "NO");}}}// 路径压缩的查找public static int find(int i) {// 我们需要找到该元素的根节点,先假设当前元素为根节点,//这个函数用来查找根节点,而根节点的父节点等于他自己,parent[root]=rootif (i != parent[i]) {parent[i] = find(parent[i]);}return parent[i];}// 合并优化public static void union(int x, int y) {//将两个元素的父节,若是不同则需统一,统一不需要,由我们自定义谁成为父节点,一直按照这个规矩下去int rootx = find(x);int rooty = find(y);//如果父节点不同就需要操作,相同就不需要if (rooty != rootx) {parent[rooty] = rootx;}}
}
http://www.dtcms.com/wzjs/57354.html

相关文章:

  • 专门做软陶的网站新疆今日头条新闻
  • 在线购物网站建设seo根据什么具体优化
  • 做网站什么数据库用的多成都网站快速开发
  • 网站源码交易网关键词推广优化排名品牌
  • 免费wap自助建站系统网站快速收录的方法
  • 吉林省网络推广公司seo还有前景吗
  • 企业电子商务网站建设的重要性网络宣传推广方法
  • 成都市建设质监站网站百度推广的步骤
  • 如何在百度上做免费推广对网站进行seo优化
  • 做直播网站赚钱吗什么是搜索引擎优化seo
  • 创意网站设计模板关键词优化报价推荐
  • 点击网络网站上海今天最新发布会
  • 南京企业网站开发跨境电商网站开发
  • 做一个交友网站怎样做需要多少资金网站制作教程视频
  • 网站建设中的板块名称微博今日热搜榜
  • 做外贸的网站谷歌seo网站排名优化
  • 虚拟机中做网站上海seo外包
  • 天长做网站公司合肥网站关键词优化公司
  • 懂的建设网站中国营销策划第一人
  • 网站后台管理布局网络推广和竞价怎么做
  • 微信招聘网站建设品牌推广策略有哪几种
  • 淘宝上做网站的客服聊天技巧培训网
  • 十堰h5网站建设自动提取关键词的软件
  • 北京做的比较好的网站公司一站式营销平台
  • 泸州北京网站建设市场策划方案
  • 有没有可以做app的网站高手优化网站
  • 上海环球金融中心高度seo关键词推广怎么做
  • 阿里巴巴做国际网站要多少钱天津seo诊断技术
  • 莱芜政府网官方网站招聘信息武汉seo首页优化公司
  • 圣辉友联做网站公司国外免费网站域名服务器查询