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

用网站还是阿里巴巴做soho如何设计产品网站建设

用网站还是阿里巴巴做soho,如何设计产品网站建设,安卓项目开发,域名ip查询【模板】并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作。 输入格式 第一行包含两个整数 N , M N,M N,M ,表示共有 N N N 个元素和 M M M 个操作。 接下来 M M M 行,每行包含三个整数 Z i , X i , Y i Z_i,X_i,Y…

【模板】并查集

题目描述

如题,现在有一个并查集,你需要完成合并和查询操作。

输入格式

第一行包含两个整数 N , M N,M N,M ,表示共有 N N N 个元素和 M M M 个操作。

接下来 M M M 行,每行包含三个整数 Z i , X i , Y i Z_i,X_i,Y_i Zi,Xi,Yi

Z i = 1 Z_i=1 Zi=1 时,将 X i X_i Xi Y i Y_i Yi 所在的集合合并。

Z i = 2 Z_i=2 Zi=2 时,输出 X i X_i Xi Y i Y_i Yi 是否在同一集合内,是的输出
Y ;否则输出 N

输出格式

对于每一个 Z i = 2 Z_i=2 Zi=2 的操作,都有一行输出,每行包含一个大写字母,为 Y 或者 N

样例 #1

样例输入 #1

4 7
2 1 2
1 1 2
2 1 2
1 3 4
2 1 4
1 2 3
2 1 4

样例输出 #1

N
Y
N
Y

提示

对于 30 % 30\% 30% 的数据, N ≤ 10 N \le 10 N10 M ≤ 20 M \le 20 M20

对于 70 % 70\% 70% 的数据, N ≤ 100 N \le 100 N100 M ≤ 1 0 3 M \le 10^3 M103

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 1 0 4 1\le N \le 10^4 1N104 1 ≤ M ≤ 2 × 1 0 5 1\le M \le 2\times 10^5 1M2×105 1 ≤ X i , Y i ≤ N 1 \le X_i, Y_i \le N 1Xi,YiN Z i ∈ { 1 , 2 } Z_i \in \{ 1, 2 \} Zi{1,2}


思路

首先,定义一个大小为 N N N的数组pre,用于记录每个元素的父节点。init函数用于初始化并查集,使得每个元素的父节点都是自己。

root函数用于查找元素 x x x的根节点,即在并查集中寻找 x x x所在集合的代表元素。这里采用路径压缩的方法,即在查找过程中,将 x x x到根节点的路径上的所有节点的父节点都直接设为根节点,从而优化后续查找效率。

merge函数用于合并两个集合,具体操作是找到两个元素的根节点,如果根节点不同,就将其中一个集合的根节点的父节点设置为另一个集合的根节点,从而实现两个集合的合并。

check函数用于检查两个元素是否在同一集合中,通过比较两个元素的根节点是否相同来判断。如果相同,输出"Y";如果不同,输出"N"。

main函数中,首先读取元素的数量 n n n和操作的数量 m m m,然后进行初始化。接下来,根据输入的操作类型,进行合并或者检查操作。如果操作类型为1,执行merge函数合并两个集合;如果操作类型为2,执行check函数检查两个元素是否在同一集合中。

使用路径压缩优化后,代码运行用时大幅度缩短。但是路径压缩会破坏树形结构。


AC代码

#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;const int N = 1e5 + 7;int pre[N];void init(int x) {for (int i = 1; i <= x; i++) {pre[i] = i;}
}int root(int x) {int i = x;while (pre[i] != i) {i = pre[i];}return pre[x] = i;
}void merge(int x, int y) {x = root(x);y = root(y);if (x == y) {return;}pre[x] = y;
}void check(int x, int y) {x = root(x);y = root(y);if (x == y) {printf("Y\n");} else {printf("N\n");}
}int main() {int n, m;scanf("%d %d", &n, &m);init(n);while (m--) {int z, x, y;scanf("%d %d %d", &z, &x, &y);if (z == 1) {merge(x, y);} else {check(x, y);}}return 0;
}
http://www.yayakq.cn/news/813847/

相关文章:

  • 自己做网站要多久wordpress后台改中文
  • 模板号专注于网站让自己的电脑做网站的服务器
  • 长清网站建设公司做零售出口的网站
  • 长春网站建设优化排名小程序开发者工具官网
  • 九龙坡区网站建设常州建设银行网站
  • 广州市网站设计公司免费用手机建立网站
  • 沃尔玛的网站建设还有用asp做网站的吗
  • 中山市路桥建设有限公司网站广告机
  • 重庆网站排名优化教程网页制作专业公司
  • 建设银行网站用户做彩妆发哪个网站浏览量高
  • 东莞公司网站怎么做东莞关键词优化软件
  • 个人网站一般做多大wordpress 4.5.4 json
  • 山西省网站备案做seo要明白网站
  • 网站建设 网站专题 网络推广宿迁市建设局投诉网站
  • 广东手机网站建设多少钱中国建筑招聘信息
  • 教做发绳的网站建立网站基本步骤
  • 网站备案密码重置申请表网站收录不好排名高
  • 计算机网站开发专业小程序入口在哪里
  • 网站建设服务器要求张家界网站建设方案
  • 沈阳做网站公司网站建设phpstudy
  • 小说网站开发业务逻辑简历模板文档
  • 做电视网站需要多大的服务器大恒建设集团有限公司网站
  • 秦皇岛 网站建设广东网站开发搭建
  • 顶呱呱网站做的怎么样变更备案网站可以访问吗
  • 从网上怎么做网站营销福田招聘信息最新招聘网
  • 自己学网站建设自己建网站 怎么做后台
  • 工程建设领域专项治理工作网站网络营销模式理论
  • 文章网站建设wordpress2016
  • 常用网站开发模式wordpress静态化插件
  • 有没有做兼职的好网站建设网站的原则