并查集(加入、查找、删除)

2023-05-16

并查集

----------------------来源洛谷
题目描述
如题,现在有一个并查集,你需要完成合并和查询操作。

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

接下来 M 行,每行包含三个整数Z i ,X i ,Y i​ 。

当Z i =1 时,将 X i​ 与Y i 所在的集合合并。
当 Z i =2 时,输出 X i​ 与 Y i​ 是否在同一集合内,是的输出 Y 否则输出 N。

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

输入输出样例
输入 #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% 的数据,N≤10,M≤20 。
对于70% 的数据,N≤100,M≤10^3。
对于 100% 的数据,1≤N≤10^4 ,1≤M≤2×10e5。

ac代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+10;
int pre[N];
int find(int x){
	if(pre[x]==x) return x;
	else 
		return pre[x] = find(pre[x]);
}
void join(int x,int y){
	int ff1=find(x);
	int ff2=find(y);
	pre[ff1]=ff2;
}
int main()
{
	int n,m;scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		pre[i]=i;
	}
	while(m--){
		int z,x,y;
//		for(int i=1;i<=n;i++){
//			printf("%d ",pre[i]);
//		}
//		system("pause");
		scanf("%d%d%d",&z,&x,&y);
		if(z==2){
			if(find(x)==find(y)){
				printf("Y\n");
			}
			else
				printf("N\n");
		}
		else{
			join(x,y);
		}
	}
	
	
	
	return 0;
}

Junk-Mail Filter(并查集删除)

--------------------来源HDU - 2473
现在有n个不同的垃圾,要做分组,而你正好是那个无辜的分类操作员,现在给你m个指令

指令M a b 表示让a与b所在的组合并在同一组
指令S a 表示将a独立成一组
一顿操作猛如虎,宝宝心里也很苦,麻烦大家来捣鼓,最后分成多少组

Input
输入包含多组,每组两个整数n,m(1<=n<=100000,1<=m<=1000000)

接下来m行M a b或S a表示操作

当n=m=0时表示结束输入

Output
对于每组数据,等操作结束后,输出分组的个数,具体格式见样例。

Sample Input
5 6
M 0 1
M 1 2
M 1 3
S 1
M 1 2
S 3

3 1
M 1 2

0 0
Sample Output
Case #1: 3
Case #2: 2

ac代码:

#include<iostream>
#include<set>
using namespace std;
const int N = 1250000;
int pre[N];
int n,m,cnt;
int find(int x){
	return x==pre[x]?x:pre[x]=find(pre[x]);
}
void merge(int x,int y){
	int fx=find(x);
	int fy=find(y);
	if(fx!=fy)
		pre[fx]=fy;
}
void del(int x){
	pre[x]=cnt;
	pre[cnt]=cnt++;
}
void clear(){
	cnt=n;
	for(int i=0;i<n;i++)
		pre[i]=cnt++;
	for(int i=n;i<2*n;i++)
		pre[i]=i;
}
void debug(){
	for(int i=0;i<n;i++)
		printf("%d %d\n",i,find(i));
	putchar(10);
}
void ress(){
	set<int> s;
	for(int i=0;i<n;i++){
		s.insert(find(i));
	}
	printf("%d\n",s.size());
}
int main()
{
	//freopen("in.txt","r",stdin);
	int title=1;
	while(~scanf("%d%d",&n,&m)){
		getchar();
		if(!n&&!m) return 0;
		clear();
		while(m--){
			char ch;
			scanf("%c",&ch);
			if(ch=='M'){
				int x,y;scanf("%d%d",&x,&y);getchar();
				merge(x,y);
			}
			else{
				int x;scanf("%d",&x);getchar();
				del(x);
			}
		}
		printf("Case #%d: ",title++);
		ress();getchar();
	}
	
	
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并查集(加入、查找、删除) 的相关文章

  • CentOS7.6_1810安装最新版的java11.02和tomcat9.0.14的记录

    所谓的最新版 xff0c 是指到2019 01 28为止的最新版 1 JAVA SE 的安装 java的安装比较简单 xff0c 按照官网的说明 xff0c 下载rpm包安装就好 用wget下载或者在windows系统上下载好rpm包 xf
  • CoreOS Linux 最新2023.5.0版的安装过程-2019-03-28

    注意 xff1a 该操作系统已经被Redhat收购 xff0c 不再更新 xff0c 而是变更为了 Fedora CoreOS系统 xff0c 可看我的文章 xff1a Fedora CoreOS 的裸机安装方法 lggirls的博客 CS
  • 【数据挖掘】5分钟带你了解文本向量化的常见方式

    5分钟带你了解文本向量化的常见方式 1 独特编码模型 2 词袋模型 3 TF IDF模型 4 N gram模型 5 Word2Vec模型 参考资料 文本向量化 将文本信息表示成能够表达文本语义的向量 是 用数值向量来表示文本的语义 词嵌入
  • 裸机安装CoreOS Linux最新2023.5版本后的简单配置(一)

    关于裸机安装方法 xff0c 请看我的博文 CoreOS Linux 最新2023 5 0版的安装过程 2019 03 28 https blog csdn net lggirls article details 88867762 一 更改
  • CoreOS 不重装而使用json文档更新系统配置的方法2019-03-29

    CoreOS在启动过程中 xff0c 先加载内核 xff0c 内核再加一个参数 xff0c 来判断是不是第一次启动 如果第一次启动 xff0c 就执行ignitoin配置 通过研究 xff0c 在 boot coreos下touch一个名称
  • docker 搭建 nginx网站

    一 从网上下载一个html5的单页网站模板 xff0c 解压 xff0c 将文件夹改名为html xff0c 重新压缩为html zip格式 二 在docker宿主机上的自定义网站内容存储文件夹内下载上一步的html zip文档 三 解压
  • docker 搭建多容器LNMP平台遇到的坑

    1 采用什么样的镜像很重要 必须是php 7 3 fpm 采用默认的latest镜像是不行的 xff0c 所以 docker pull php 7 3 fpm 现在有了7 4 fpm docker pull nginx docker pul
  • docker php 扩展安装合集

    在安装SuiteCRM的过程中遇到了 没有zip扩展功能的问题 xff0c 经过一番折腾 xff0c 找到了这个文章 xff0c 在此转发分享 xff0c 希望对其他人有所帮助 1 先进入myphp容器 xff0c 看一下php目前安装了哪
  • SuiteCRM的汉化

    以管理员账户进入suitecrm 选择 admin xff0c 滚动页面 xff0c 找到下面 Developer Tools下的Module Loader项目 上传下载好的汉化包 点击下载后在该项目上出现的 INSTALL xff0c 完
  • docker 搭建odoo ERP服务器

    按照官方教程来操作即可 xff1a https hub docker com odoo 环境 xff1a Linux CoreNAS 4 19 25 coreos 1 SMP Sat Mar 9 01 05 06 00 2019 x86 6
  • 使用docker 搭建 ftp文件服务器

    A 使用fauria vsftpd创建ftp 这个最简单 xff0c 推荐使用 docker run itd name ftp h ftp p 20 20 p 21 21 p 21100 21110 21100 21110 v home v
  • 为Coreos系统安装docker-compose 命令

    不知为什么 xff0c 官方版的CoreOS操作系统安装了docker 但就是没有docker compose命令 xff0c 使得通过 yaml配置容器的方式无法进行 xff0c 因而需要进行手动安装这一工具 在CoreOS中 xff0c
  • 用笔记本做路由器共享4G流量

    有一张电信的4G手机卡 xff0c 每个月40G的高速流量 xff0c 但总是用不完 xff0c 所以考虑将手机开放热点 xff0c 用家里的废弃笔记本装CentOS7系统 xff0c 做个NAT xff0c 再接一个TP link 5口交
  • 【AIGC】手把手使用扩散模型从文本生成图像

    手把手使用扩散模型从文本生成图像 从 DALLE 到Stable Diffusion使用diffusers package从文本prompt生成图像参考资料 在这篇文章中 xff0c 我们将手把手展示如何使用Hugging Face的dif
  • 验证win10下解决某些word文档提示”内存或磁盘空间不足”的几种方法

    验证win10下解决某些word文档提示 内存或磁盘空间不足 的几种方法 编者 xff1a 李国帅 qq xff1a 9611153 微信lgs9611153 时间 xff1a 2020 03 11 背景原因 前段时间把系统升级到了win1
  • windows下配置apache+php环境

    PHP 配置PHP7 43 Apache2 4 环境 首先讲一下电脑环境与版本 电脑 window10 X64 Apache httpd 2 4 33 o102o x64 vc14 r2 zip xff08 官网下载http www apa
  • Content-Type引发的服务端收不到HTTP请求参数的问题

    问题现象 xff1a 前端POST请求参数已经传过来了 xff0c Java后端Debug也能进到请求里 xff0c 可就是取不到请求参数 用Chrome 开发者工具可以看到请求的不同 xff1a 可以看到请求参数一个在Form Data中
  • C++中两个头文件相互引用

    这种做法很显然会出错 xff08 定义一个头文件需要先引进这个头文件自己 xff0c 编译必然报错 xff09 解决方法 xff0c 在头文件中声明另一个类 xff0c 再在源文件中引入头文件 xff0c 就像这样 xff1a a h cl
  • 安装teamveaver时 报错 未安装软件包 libqt5qml5 记录一下

    iser 64 iser 下载 sudo dpkg i teamviewer 15 11 6 amd64 deb sudo iser 的密码 xff1a 正在读取数据库 系统当前共安装有 217060 个文件和目录 正准备解包 teamvi
  • Django教务管理系统|学生选课系统(关注下载源码)

    关注即可下载源码 写在前面 采用Django框架以及MySQL数据库实现BS架构的教务管理系统 xff0c 网页界面模仿了正方软件股份有线公司开发的教务管理系统 题目 建立一个学生选课系统 编写应用程序完成系统开发 建立基本表 xff1a

随机推荐

  • c/c++|解线性方程组的迭代法(高斯-赛德尔迭代法)

    span class token macro property span class token directive keyword include span span class token string lt bits stdc 43
  • C++ 字符(char)转字符串(string)

    char转string 误区 无法使用to string 方法 span class token keyword char span c span class token operator 61 span span class token
  • B树和B+树

    B树 上图是一颗完整的5阶B树 xff0c 符合以下特点 xff1a 对于一个m阶B树 xff0c 每个节点最多有m个分支 xff1b 根节点且不是叶子节点则至少有2个分支 xff0c 而非根非叶节点至少有m 2 xff08 上取整 xff
  • R-Tree

    R Tree R Tree是一颗用来存储高维数据的平衡树 xff0c 它把B树的思想扩展到了多维空间 xff0c 采用了B树分割空间思想 xff0c 并在添加 删除操作时采用合并 分解节点的方法 xff0c 保证树的平衡性 数据结构 每个R
  • 【AI炼丹术】写深度学习代码的一些心得体会

    写深度学习代码的一些心得体会 体会1体会2体会3总结内容来源 一般情况下 xff0c 拿到一批数据之后 xff0c 首先会根据任务先用领域内经典的Model作为baseline跑通 xff0c 然后再在这个框架内加入自己设计的Model x
  • win10配置MMClassification+PyTorch+CUDA

    Win10配置MMClassification 依赖 Python 3 8CUDA 10 2Microsoft Visual C 43 43 14 0PyTorch 1 10 0MMCV 1 3 17MMClassification 0 1
  • 逢七过

    试题描述 相信大家都玩过这个游戏 xff0c 一群人围坐一圈 xff0c 开始喊数 xff0c 是7的倍数或者数中含有7的均要说 过 xff0c 其余的数就直接说出数的大小 为了简化问题 xff0c 我们规定 xff0c 对于下面的情况我们
  • 斐波那契数列

    试题描述 斐波那契数列指的是这样一个数列 xff1a 1 1 2 3 5 8 13 21 34 这个数列从第三项开始 xff0c 每一项都等于前两项之和 请你输出斐波那契数列的前N项 xff08 0 lt N lt 30 xff09 请用循
  • 允许并列的排名

    试题描述 在我们参加的各种竞赛中 xff0c 允许并列的排名方式是经常遇到的 例如有四名选手的成绩分别为50 80 50 30分 xff0c 则80分的选手为第一名 xff0c 50分的两名选手均为第二名 xff0c 30分的选手为第三名
  • n位水仙花数

    试题描述 n位水仙花数是指一个n位数 xff0c 它的每个位上的数字的n次幂之和等于它本身 例如 xff1a 三位水仙花数是指一个三位数 xff0c 它的每个位上的数字的3次幂之和等于它本身 xff08 例如 xff1a 13 43 53
  • 成绩的最高分问题

    试题描述 编写函数ReadScore 和FindMax xff0c 输入某班学生某门课的成绩和学号 xff08 最多不超过40人 xff09 xff0c 当输入为负值时 xff0c 表示输入结束 xff0c 用函数编程通过返回数组中最大元素
  • xcode编译静态库时:**** is not an object file (not allowed in a library)

    出现此错误 xff1a 第一步 xff1a 链接的库是否是存在的且正确的库 a 第二步 xff1a 如果还出现错误 xff0c 那么确定Xcode搜索库路径 Library search paths xff0c 是否有错误 如果在工程目录中
  • Ubuntu桥接模式下无法连接网络的问题

    新装的VMware虚拟机 xff0c 作为开发 xff0c 需要使用桥接模式 xff0c 但是一直无法正常连接网络 xff0c ifconfig一直没有IPV4地址显示 xff0c ping外网也不通 网上的方法也几乎试了个遍 xff0c
  • 黑马程序员————数组,字符串,函数,指针

    Java培训 Android培训 iOS培训 Net培训 期待与您交流 xff01 一 数组的基本概念 只能存放一种类型的数据 xff0c 比如int类型的数组 float类型的数组 里面存放的数据称为 元素 二数组的定义 1 定义 声明数
  • QT控件提升之QPushButton提升为QMenu

    当一个控件进行提升之后 xff0c 就有了新的功能 xff0c 在原来的一些特性基础上 xff0c 发生一些新的改变 QT控件提升方法 xff1a 1 需要写一个需要提升为某种功能的类 2 打开qt设计师 xff0c 在对应需要提升的控件
  • 【Hugging Face】Hugging Face 主要类和函数介绍

    Hugging Face 主要类和函数介绍 Hugging face是什么 xff1f 什么是自然语言处理 xff1f PipelineDatasetPipeline on GPUMetricsAutoClasses在本地保存和加载模型结论
  • 基于ubuntu server 16.04环境安装kvm虚拟机并创建windows系统

    由于项目需要 xff0c 最近在研究 kvm 虚拟机 xff0c 将这个过程中遇到的一些问题做一些记录 由于本人水平有限 xff0c 其中不妥之处还请网友们不吝赐教 1 操作环境 ubuntu server 16 04 默认的安装后没有桌面
  • Linux炫酷代码秀

    cmatrix 命令 这个很酷 xff01 黑客帝国 那种矩阵风格的动画效果 安装 sudo apt get install cmatrix 运行 cmatrix
  • keil中include 头文件循环引用问题

    在头文件中使用 ifdef和 xff03 ifndef是非常重要的 xff0c 可以防止双重定义的错误 有时候 xff0c 在b h中会include 34 a h 34 xff0c 在 34 c h 34 中会include 34 b h
  • 并查集(加入、查找、删除)

    并查集 来源洛谷 题目描述 如题 xff0c 现在有一个并查集 xff0c 你需要完成合并和查询操作 输入格式 第一行包含两个整数 N M 表示共有 N 个元素和 M 个操作 接下来 M 行 xff0c 每行包含三个整数Z i X i Y