#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. 基于能量的生成对抗网络
  2. gradle修改版本
  3. 【cocos2d-x从c++到js】20:脚本语言风格的JS代码
  4. BZOJ3998:[TJOI2015]弦论——题解
  5. [CodeForces 1603C] Extreme Extension(贪心 + 数论分块优化dp)
  6. 于谦加盟高德地图 推出“哪儿都熟”相声导航
  7. php MySQL定义,PHP + MySQL用户定义函数
  8. [轉].NET项目是否有必要升级到.NET 3.5 + VS 2008
  9. 名片识别信息分类python_名片识别API接口_免费数据接口 - 极速数据
  10. 详解测试开发工程师六大能力模型
  11. arduino入门(一)arduino下载安装,炒鸡详解
  12. Ameya:蔡司激光共聚焦显微镜的优势特点及应用领域
  13. 知网海外版(硕博论文pdf下载方式)
  14. 微信小程序开发之——摇一摇Demo
  15. Android 检查权限总是 PERMISSION_GRANTED
  16. 远程服务器搭建建站助手,windows + 管理助手建站指南
  17. [sdx62]bitbake lighttpd出现NOTE: Reconnecting to bitbake server...
  18. NC19822 我不爱她 kmp+hash
  19. pcb 布线电容 影响延时--信号跨分割
  20. USACO-Subset Sums

热门文章

  1. j1_12_01.实现手机号计数功能关键算法.传入字符串数组,获取符合手机号格式的字符串.从键盘接收一行字符串,字符串中只包含数字和空格,统计其中所有的手机号码数量。
  2. 欧盟委员会遭受DDoS攻击 服务器离线数小时
  3. Mac 电脑wify 没有ip地址
  4. 爱立信联手日本软银在东京进行5G测试
  5. C++课程设计报告--通讯录管理系统
  6. ASRT语音识别项目
  7. DHU deeplearning 深度学习处理文本数据 章节阶测
  8. PHP:案例2--商品价格计算(案例分析+设计思路+知识点讲解+源码+结果展示)
  9. 七牛云 RTN:基于 WebRTC 零基础搭建实时音视频平台
  10. 董明珠如何渗透珠海银隆 联手万达等企业拿下22%股权