题目描述

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

输入输出格式

输入格式:

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

接下来M行,每行包含三个整数Zi、Xi、Yi

当Zi=1时,将Xi与Yi所在的集合合并

当Zi=2时,输出Xi与Yi是否在同一集合内,是的话输出Y;否则话输出N

输出格式:

如上,对于每一个Zi=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

说明

时空限制: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

并查集(许多东西的基本哦)相关推荐

  1. 蓝桥备赛第四周 同余+并查集

    文章目录 0x33 同余 同余类+剩余系+费马小定理+欧拉定理及推论 最幸运的数字 题解 这次的代码很多东西:欧拉函数快速求解,gcd,快速乘,各种定理,建议当模板背 10LL 转换成长整型 快速乘+ ...

  2. 我知道并查集的可爱之处

    请开始您的并查集之旅 迈入门槛 文字概念 故事配图辅助理解 浅尝辄止 畅通工程 程序自动分析 supermarket 慢慢深入 银河英雄传说 parity game 1.带权并查集 2.扩展域并查集 ...

  3. 雷神领域(并查集真是个好东西)并查集+流氓dp

    考场上,整整看了半个小时以上的题目!!! 化简题意: 给定一个全0矩阵,一些坐标点(x,y)为1,当三个点可以构成一个直角三角形时(直角边长为整数)拓展为一个矩形,之后从(0,0)出发,求最多的占用行 ...

  4. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

  5. 【BZOJ-2342】双倍回文 Manacher + 并查集

    2342: [Shoi2011]双倍回文 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1799  Solved: 671 [Submit][Sta ...

  6. 花神游历各国 题解(小清新线段树/树状数组+并查集)

    题面 众所周知,这是一道小清新线段树 然而可以用树状数组水过去且跑得飞快 看到区间开方第一反应肯定是线段树懒标记区间修改之类的,但是这个东西似乎确凿不可维护 所以考虑暴力循环单点修改->T飞 于 ...

  7. hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233 模板题,kruskal求最小生成树. 并查集是个好东西啊  就是注意一点 输入边的信息时,角标 ...

  8. 蓝桥杯 历届试题 合根植物(并查集)

    传送门 题目描述 w星球的一个种植园,被分成 m * n个小格子(东西方向m行,南北方向n列).每个格子里种了一株合根植物. 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植 ...

  9. sdut 2129树结构练习——判断给定森林中有多少棵树(并查集)

    树结构练习--判断给定森林中有多少棵树 Time Limit: 1000MS Memory limit: 65536K 题目描述 众人皆知,在编程领域中,C++是一门非常重要的语言,不仅仅因为其强大的 ...

  10. [hihoCoder]无间道之并查集

    题目大意: #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之, ...

最新文章

  1. Python自动化测试框架之Pytest教程【让你小鸡变老鹰】
  2. 博士发公众号文章也能评国奖?双一流高校新规引热议!
  3. 东方数智发布新品AIDOL™,打造人工智能偶像全息平台
  4. vector在java中用什么_在java中使用Vector是否安全?
  5. NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)
  6. try/ catch/ finally, 你不知道的细节,很骚!
  7. RuntimeError: get_active_profile() can only be called between a start() and a following stop()
  8. matlab调用kmeans_matlab做聚类分析(k-means)
  9. android horizontalscrollview 动画,Android HorizontalScrollView左右滑动效果
  10. java分页代码思路,记录--java 分页 思路 (hibernate关键代码)
  11. Cisco基本必须掌握命令
  12. Ubuntu配置NFS服务器与客户端
  13. 【运动学】基于matlab GUI模拟鱼类目标追击问题【含Matlab源码 166期】
  14. 图像分割python代码_SILC超像素分割算法详解(附Python代码)
  15. TimesTen 介绍
  16. 关于企业微信二次开发
  17. 信息储存服务器有没有辐射,服务器存储主机存在辐射吗
  18. gazebo中给机器人添加16线激光雷达跑LIO-SAM
  19. 数据库实验5---存储过程和存储函数
  20. 童小军:用户是大数据的本质驱动力

热门文章

  1. linux基础(二)——linux各文件夹含义和作用
  2. Python 字典(Dictionary) items()方法
  3. Hyperledger Fabric教程(14)--动态添加组织的步骤
  4. 2017php类库,AMQB官方PHP库
  5. 基于springboot的简易聊天系统
  6. BIO、NIO和AIO的区别简述
  7. 2.5.PHP7.1 狐教程-【数据类型】
  8. 获取json格式的内容数据时,使用的方法避免空指针
  9. MySQL解决去除逗号||把逗号替换为《》,/,?,。,-,+,* 等,并且截取该字段的后几位字符串(取字符串的固定长度)
  10. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...