并查集(许多东西的基本哦)
题目描述
如题,现在有一个并查集,你需要完成合并和查询操作。
输入输出格式
输入格式:
第一行包含两个整数N、M,表示共有N个元素和M个操作。
接下来M行,每行包含三个整数Zi、Xi、Yi
当Zi=1时,将Xi与Yi所在的集合合并
当Zi=2时,输出Xi与Yi是否在同一集合内,是的话输出Y;否则话输出N
输出格式:
如上,对于每一个Zi=2的操作,都有一行输出,每行包含一个大写字母,为Y或者N
输入输出样例
4 7 2 1 2 1 1 2 2 1 2 1 3 4 2 1 4 1 2 3 2 1 4
N Y N Y
说明
时空限制:1000ms,128M
数据规模:
对于30%的数据,N<=10,M<=20;
对于70%的数据,N<=100,M<=1000;
对于100%的数据,N<=10000,M<=200000。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。--分割线
并查集很重要,但它并不难(O(∩_∩)O~~)
他就是用递归查爸爸的过程。。。。。
我发现两个数,要先查它们的爸爸是谁
如果是一样的那么它们属于同集合
if(find(a)==find(b))
cout<<yes<<endl;
那么找爸爸函数是怎样的呢?
int find(int k){
if(f[k]==k) return k; 如果某点爸爸是其本身 ,那就说明次点是祖宗 ,返回祖宗
return f[k]=find(f[k]); 这句话比较玄妙 它可以在跟新爸爸的同时继续你的查找
}
其实并查集自此就讲完了
贴代码:
#include<bits/stdc++.h> using namespace std;int n,m; int f[10005];int find(int k){if(f[k]==k) return k;return f[k]=find(f[k]); } int main(){cin>>n>>m;//n元素 m操作 for(int i=1;i<=n;++i){f[i]=i;}while(m--){int z,y,x;scanf("%d%d%d",&z,&x,&y);if(z==1){f[find(x)]=find(y);}if(z==2){if(find(x)==find(y))printf("Y\n");elseprintf("N\n");}} }
转载于:https://www.cnblogs.com/crazily/p/10121934.html
并查集(许多东西的基本哦)相关推荐
- 蓝桥备赛第四周 同余+并查集
文章目录 0x33 同余 同余类+剩余系+费马小定理+欧拉定理及推论 最幸运的数字 题解 这次的代码很多东西:欧拉函数快速求解,gcd,快速乘,各种定理,建议当模板背 10LL 转换成长整型 快速乘+ ...
- 我知道并查集的可爱之处
请开始您的并查集之旅 迈入门槛 文字概念 故事配图辅助理解 浅尝辄止 畅通工程 程序自动分析 supermarket 慢慢深入 银河英雄传说 parity game 1.带权并查集 2.扩展域并查集 ...
- 雷神领域(并查集真是个好东西)并查集+流氓dp
考场上,整整看了半个小时以上的题目!!! 化简题意: 给定一个全0矩阵,一些坐标点(x,y)为1,当三个点可以构成一个直角三角形时(直角边长为整数)拓展为一个矩形,之后从(0,0)出发,求最多的占用行 ...
- 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用
二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...
- 【BZOJ-2342】双倍回文 Manacher + 并查集
2342: [Shoi2011]双倍回文 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1799 Solved: 671 [Submit][Sta ...
- 花神游历各国 题解(小清新线段树/树状数组+并查集)
题面 众所周知,这是一道小清新线段树 然而可以用树状数组水过去且跑得飞快 看到区间开方第一反应肯定是线段树懒标记区间修改之类的,但是这个东西似乎确凿不可维护 所以考虑暴力循环单点修改->T飞 于 ...
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233 模板题,kruskal求最小生成树. 并查集是个好东西啊 就是注意一点 输入边的信息时,角标 ...
- 蓝桥杯 历届试题 合根植物(并查集)
传送门 题目描述 w星球的一个种植园,被分成 m * n个小格子(东西方向m行,南北方向n列).每个格子里种了一株合根植物. 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植 ...
- sdut 2129树结构练习——判断给定森林中有多少棵树(并查集)
树结构练习--判断给定森林中有多少棵树 Time Limit: 1000MS Memory limit: 65536K 题目描述 众人皆知,在编程领域中,C++是一门非常重要的语言,不仅仅因为其强大的 ...
- [hihoCoder]无间道之并查集
题目大意: #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之, ...
最新文章
- Python自动化测试框架之Pytest教程【让你小鸡变老鹰】
- 博士发公众号文章也能评国奖?双一流高校新规引热议!
- 东方数智发布新品AIDOL™,打造人工智能偶像全息平台
- vector在java中用什么_在java中使用Vector是否安全?
- NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)
- try/ catch/ finally, 你不知道的细节,很骚!
- RuntimeError: get_active_profile() can only be called between a start() and a following stop()
- matlab调用kmeans_matlab做聚类分析(k-means)
- android horizontalscrollview 动画,Android HorizontalScrollView左右滑动效果
- java分页代码思路,记录--java 分页 思路 (hibernate关键代码)
- Cisco基本必须掌握命令
- Ubuntu配置NFS服务器与客户端
- 【运动学】基于matlab GUI模拟鱼类目标追击问题【含Matlab源码 166期】
- 图像分割python代码_SILC超像素分割算法详解(附Python代码)
- TimesTen 介绍
- 关于企业微信二次开发
- 信息储存服务器有没有辐射,服务器存储主机存在辐射吗
- gazebo中给机器人添加16线激光雷达跑LIO-SAM
- 数据库实验5---存储过程和存储函数
- 童小军:用户是大数据的本质驱动力
热门文章
- linux基础(二)——linux各文件夹含义和作用
- Python 字典(Dictionary) items()方法
- Hyperledger Fabric教程(14)--动态添加组织的步骤
- 2017php类库,AMQB官方PHP库
- 基于springboot的简易聊天系统
- BIO、NIO和AIO的区别简述
- 2.5.PHP7.1 狐教程-【数据类型】
- 获取json格式的内容数据时,使用的方法避免空指针
- MySQL解决去除逗号||把逗号替换为《》,/,?,。,-,+,* 等,并且截取该字段的后几位字符串(取字符串的固定长度)
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...