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

视频 播放网站怎么做公司网络营销实施计划

视频 播放网站怎么做,公司网络营销实施计划,南通网站定制方案,做网站的一般要多少钱【模板】并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作。 输入格式 第一行包含两个整数 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.bjxfkj.com.cn/article/106294.html

相关文章:

  • 怎样在百度做网站表白怎么查看域名是一级还是二级域名
  • h网站建设刚出来的新产品怎么推
  • 上海平台网站建设平台十大接单推广平台
  • 哈尔滨网站建设制作价格永州网站seo
  • mvc5 网站开发seo如何优化的
  • 怎么做关于狗的网站什么时候友情链接
  • 网站备案ip外链火
  • 怎么做点击图片进网站今日实时热点新闻事件
  • 网站装修的代码怎么做建站平台哪个好
  • 网站开发流程 ppt广州网络seo优化
  • 企业在什么网站推广网站推广搜索
  • 网站注册赌博违法吗网站优化名词解释
  • 网站建设申报方案上海网络推广外包
  • 网站建设 贸易seo人员的相关薪资
  • 素材下载网站开发文档seo外包公司排名
  • 网站目录怎么做301跳转关键词在线查询
  • 温州市建设监理协会网站百度云搜索引擎入口
  • 网站报价表对比表怎么做优化网站关键词排名软件
  • 网站开发什么是会话站长统计app下载
  • 做一个网站多长时间万网域名注册查询网
  • 手机网站返回按钮怎么做企业营销培训课程
  • 做网站如何变现推广方案100个
  • 手机如何做任务赚钱的网站网站项目开发流程
  • 有域名 有固定ip怎么做网站国外网站开发
  • 网络服务器安全配置操作竞赛试题温州seo服务
  • 阿里云网站备案登陆桂林seo排名
  • 下城区做网站电商网
  • 长沙企业网站制作哪家好免费奖励自己的网站
  • 计算机前端开发要学哪些软件seo标题优化裤子关键词
  • 更换网站程序营销手机都有什么功能啊