题目描述

给出一个并查集,请完成合并和查询操作。

输入格式:

第一行包含两个整数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

数据规模

对于30%的数据,N<=10,M<=20;

对于70%的数据,N<=100,M<=1000;

对于100%的数据,N<=10000,M<=200000。

时空限制:1000ms, 128M

注:PAT上有同样的题目,但是时空限制为400 ms, 64 MB

// 这个题目400ms的要求稍有严苛了,最后一个测试点时过时不过,不知道是否有更好的方法进行优化#include <iostream>
using namespace std;
int f[10005];
int n, m;// // 递归find根节点
// int find(int v)
// {
//     return f[v] == v ? v : f[v] = find(f[v]);
// }// 非递归find根节点
int find(int x)
{int r = x;while (r != f[r])r = f[r];int i = x, j;while (i != r){j = f[i];f[i] = r;i = j;}return r;
}int main()
{// 清除cin效率问题ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n >> m;// init functionfor (int i = 1; i <= n; i++){f[i] = i;}while (m--){int x, y, z;cin >> x >> y >> z;if (x == 1){// merge functionf[find(y)] = find(z);}else{cout << (find(y) == find(z) ? "Y" : "N") << endl;}}system("pause");return 0;
}

洛谷 P3367 ---- 【模板】并查集相关推荐

  1. 洛谷P4092树——并查集

    题目:https://www.luogu.org/problemnew/show/P4092 利用并查集,倒序离线,那么从倒序来看被撤销标记的点就再也不会被标记,所以用并查集跳过: 莫名其妙的WA,调 ...

  2. 洛谷[P1396]营救 并查集

    题目地址http://www.luogu.org/problem/show?pid=1396 P1396拯救膜法师(欸??) 题目描述 "咚咚咚--""查水表!" ...

  3. 4.11每日一题之亲戚(洛谷c++)|简单并查集

  4. 并查集模板——并查集(洛谷 P3367)

    题目选自洛谷P3367 是并查集的最入门的题目,也是并查集的模板题~~ 如果你还不知道并查集是什么? 请看我的这篇文章 点击链接 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入格式 ...

  5. 洛谷 P3367 【模板】并查集

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P3367 并查集可以支持的操作:"并"和"查".然后这道题主要 ...

  6. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  7. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

  8. ACM模板——并查集

    #define _for(i,a,b) for(int i = (a);i < (b);i ++) const int maxn = 50003; int par[maxn]; //父亲 int ...

  9. 洛谷.4897.[模板]最小割树(Dinic)

    题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...

最新文章

  1. JavaScript获取当前日期,昨天,今天日期以及任意天数间隔日期
  2. [转]SVN + CruiseControl.NET + NANT 自动编译提交的项目最小DEMO
  3. 串行异步通信_单片机串行口介绍
  4. [pytorch、学习] - 5.3 多输入通道和多输出通道
  5. c语言记录五个数组编程,C语言经典编程之数组
  6. Python爬虫入门七正则表达式
  7. 传说中的马尔科夫链到底是个什么鬼?
  8. Resharper快捷键及用法
  9. 为什么我离开了管理岗位
  10. Gpower软件真不错
  11. Struts2到底为我们做了什么
  12. 使用卡尔曼滤波器进行回声消除
  13. 转:getParameter、getParameterValues、getParameterMap用法详解
  14. SpringCloud系列——Eureka中Region和Zone概念介绍
  15. [转]scite文本编辑器的说明
  16. 职场必备:Excel2016,官方推荐使用技巧
  17. 瘟神的尾行 -- Rootkit技术发展史 (转载)
  18. JAVA导入/导出EXCEL文件,自定义校验,错误回写excel,使用简单快捷
  19. MySQL数据库之设置密码修改密码用户名
  20. 非线性激励函数sigmoid,tanh,softplus,Relu

热门文章

  1. linux自动挂载usb打印机,Linux下使用Usbmount实现USB设备自动挂载
  2. mysql dnslog_dnslog小技巧
  3. ldap协议 java_java如何调用ldap协议【LdapContext】
  4. sha-1算法的实现 c语言,SHA-1算法的C语言实现
  5. attrib批量显示文件夹_1.2Windows之DOS命令基础篇-学习attrib+del+copy+xcopy命令
  6. pycharm项目目录结构_「Actix-web项目」-项目整体目录结构
  7. cmd255command.executereader()打印连接错误_打印经常遇到的几个问题,轻松解决
  8. Linux单独编译设备树,迅为IMX6Q开发板-非设备树内核-单独编译内核驱动
  9. Java集合迭代器原理图解_Java Iterator接口遍历单列集合迭代器原理详解
  10. Java 分割字符串