#include <iostream>
using namespace std;
const int N=1e5+10;
int p[N];//祖先数组
//查找祖先
int find(int x){if(p[x]!=x){p[x]=find(p[x]);}return p[x];
}
int main(){int m,n,a,b;char s[2];scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)p[i]=i;while(m--){scanf("%s%d %d",s,&a,&b);if(s[0]=='M')p[find(a)]=find(b);else {if(find(a)==find(b))printf("Yes\n");else printf("No\n");}}}

升级版:查询每个集合的的元素个数

#include <iostream>
using namespace std;
const int N=1e5+10;
int  p[N];
int si[N];//个数
int find(int x){if(p[x]!=x){ p[x]=find(p[x]);}return p[x];
}
int main(){int n,m,a,b;char s[3];cin>>n>>m;for(int i=1;i<=n;i++){p[i]=i;si[i]=1;}while(m--){scanf("%s",s);if(s[0]=='C'){scanf("%d %d",&a,&b);if(find(a)==find(b))continue;else {si[find(b)]+=si[find(a)];//先更新集合个数,再更新祖先,顺序不能换!!!p[find(a)]=find(b);}}else if(s[1]=='1'){scanf("%d %d",&a,&b);if(find(a)==find(b))printf("Yes\n");else printf("No\n");}else {   scanf("%d",&a);printf("%d\n",si[find(a)]);}}
}

并查集(找祖先)(可以将集合当成网或无向图)相关推荐

  1. Codeforces 103B - Cthulhu(并查集 找环和块)

    传送门:https://codeforces.com/problemset/problem/103/B 题意: 给一个n个结点,m条边的无向图 判断给定图是否满足以下条件: 能被表示为有3个及以上的有 ...

  2. ccsu1359 木棒相交 (叉积线段判交,并查集判断是否属于同一个集合)

    题意:判断n条木棒中木棒a是否与木棒b相交.其中木棒的相交具有传递性. 首先用一个判断线段是否相交的函数判断相交: struct Point {double x;double y; }; typede ...

  3. java并查集找朋友圈_图—并查集(解决朋友圈问题)

    图也是一种 非线性结构,是由多个顶点组成的关系集合组成的一种数据结构.图可以分为两种,无向图和有向图. ★图的定义: ★典型问题: 利用图能够解决很多问题,这里有一个较为典型的问题,假如已知有n个人和 ...

  4. 并查集---找朋友圈个数问题,连通度问题,等的有效算法

    数据结构方面,你了解并查集么? 上交05年计算机复试 上机 畅通工程问题: 例题1 修路连通问题 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通 ...

  5. java最简单的并查集(不想交集合)以及杭电1272

    并查集要有的一些属性:value:表示当前值,指针:(不一定是指针)指向父节点. 还有一个属性number:表示该树存在的总个数.(也可以用深度表示).我用小树插在大树上. 如果是普通数字表示的树,可 ...

  6. java并查集找朋友圈_并查集求朋友圈最大人数

    #include #include using namespace std ; int findRoot( int set[ ], int s ) { if (s == set[s]) return ...

  7. 图论(最短路,最小生成树,并查集)

    本文目录: tarjan算法(判断环) 最小生成树(Kruskal算法) 最小生成树(Prim算法) 优先队列实现dijkstra(最短路) 并查集(求环) floyd(弗洛伊德) (最短路) 判断环 ...

  8. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  9. Mr. Kitayuta‘s Technology CodeForces - 505D(并查集+拓扑排序或dfs找环) 题解

    题目  Shuseki Kingdom is the world's leading nation for innovation and technology. There are n cities ...

最新文章

  1. 41款实用工具,数据获取、清洗、建模、可视化都有了
  2. mysql sqlserver对比_很用心的写了 9 道 MySQL 面试题
  3. eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
  4. 世界无烟日丨如何科学戒烟?
  5. ifconfig 命令找不到解决
  6. php项目从本地apache移到linux的nginx上,遇到的一些访问权限和报错的问题。
  7. SQL2000自动备份
  8. 素数环-dfs回溯+二维数组记录(c++实现)
  9. ai预测占比_2019-2021年中国AI芯片市场预测与展望数据
  10. 万年历c语言设计报告,C语言实训题目设计报告 万年历
  11. 6个好用的Web开发工具
  12. 2020年Java面试100题
  13. 我关于读书的一点小体会
  14. 量化投资学习——股票数据接口的汇总和整理
  15. 一款用VBS编写的修仙风格打怪游戏
  16. 使用VC++6.0创建.cpp文件工程
  17. Nginx自动跳转到带www域名规则配置、Nginx多域名向主域名跳转
  18. 《设计模式》——接口隔离原则
  19. android 11.0 12.0SystemUI 状态栏下拉快捷添加截图快捷开关
  20. 机器学习H2O AI框架简介

热门文章

  1. 网络攻防技术与实践笔记-信息收集技术手段
  2. eclipse 找不到configure working sets选项
  3. nokia n1 android 6,诺基亚首款安卓平板,Nokia N1正式发布
  4. nokia 7 Android8,全面屏+原生安卓8.0:NOKIA 诺基亚 发布 Nokia 7 Plus 手机
  5. 如何有效的维权,这些投诉平台你可能用得上
  6. drtek收音机使用说明_车载收音机按键图解说明,老式车载收音机说明书
  7. ftp报错Could not parse response code. Server Reply ssh
  8. Deflate数据格式分析(RFC-1951)
  9. java 接口向上转型_JAVA-向上转型与向下转型在接口中的应用
  10. Eclipse安装插件时,总卡住