并查集(找祖先)(可以将集合当成网或无向图)
#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)]);}}
}
并查集(找祖先)(可以将集合当成网或无向图)相关推荐
- Codeforces 103B - Cthulhu(并查集 找环和块)
传送门:https://codeforces.com/problemset/problem/103/B 题意: 给一个n个结点,m条边的无向图 判断给定图是否满足以下条件: 能被表示为有3个及以上的有 ...
- ccsu1359 木棒相交 (叉积线段判交,并查集判断是否属于同一个集合)
题意:判断n条木棒中木棒a是否与木棒b相交.其中木棒的相交具有传递性. 首先用一个判断线段是否相交的函数判断相交: struct Point {double x;double y; }; typede ...
- java并查集找朋友圈_图—并查集(解决朋友圈问题)
图也是一种 非线性结构,是由多个顶点组成的关系集合组成的一种数据结构.图可以分为两种,无向图和有向图. ★图的定义: ★典型问题: 利用图能够解决很多问题,这里有一个较为典型的问题,假如已知有n个人和 ...
- 并查集---找朋友圈个数问题,连通度问题,等的有效算法
数据结构方面,你了解并查集么? 上交05年计算机复试 上机 畅通工程问题: 例题1 修路连通问题 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通 ...
- java最简单的并查集(不想交集合)以及杭电1272
并查集要有的一些属性:value:表示当前值,指针:(不一定是指针)指向父节点. 还有一个属性number:表示该树存在的总个数.(也可以用深度表示).我用小树插在大树上. 如果是普通数字表示的树,可 ...
- java并查集找朋友圈_并查集求朋友圈最大人数
#include #include using namespace std ; int findRoot( int set[ ], int s ) { if (s == set[s]) return ...
- 图论(最短路,最小生成树,并查集)
本文目录: tarjan算法(判断环) 最小生成树(Kruskal算法) 最小生成树(Prim算法) 优先队列实现dijkstra(最短路) 并查集(求环) floyd(弗洛伊德) (最短路) 判断环 ...
- bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞
没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...
- Mr. Kitayuta‘s Technology CodeForces - 505D(并查集+拓扑排序或dfs找环) 题解
题目 Shuseki Kingdom is the world's leading nation for innovation and technology. There are n cities ...
最新文章
- 基于能量的生成对抗网络
- gradle修改版本
- 【cocos2d-x从c++到js】20:脚本语言风格的JS代码
- BZOJ3998:[TJOI2015]弦论——题解
- [CodeForces 1603C] Extreme Extension(贪心 + 数论分块优化dp)
- 于谦加盟高德地图 推出“哪儿都熟”相声导航
- php MySQL定义,PHP + MySQL用户定义函数
- [轉].NET项目是否有必要升级到.NET 3.5 + VS 2008
- 名片识别信息分类python_名片识别API接口_免费数据接口 - 极速数据
- 详解测试开发工程师六大能力模型
- arduino入门(一)arduino下载安装,炒鸡详解
- Ameya:蔡司激光共聚焦显微镜的优势特点及应用领域
- 知网海外版(硕博论文pdf下载方式)
- 微信小程序开发之——摇一摇Demo
- Android 检查权限总是 PERMISSION_GRANTED
- 远程服务器搭建建站助手,windows + 管理助手建站指南
- [sdx62]bitbake lighttpd出现NOTE: Reconnecting to bitbake server...
- NC19822 我不爱她 kmp+hash
- pcb 布线电容 影响延时--信号跨分割
- USACO-Subset Sums
热门文章
- j1_12_01.实现手机号计数功能关键算法.传入字符串数组,获取符合手机号格式的字符串.从键盘接收一行字符串,字符串中只包含数字和空格,统计其中所有的手机号码数量。
- 欧盟委员会遭受DDoS攻击 服务器离线数小时
- Mac 电脑wify 没有ip地址
- 爱立信联手日本软银在东京进行5G测试
- C++课程设计报告--通讯录管理系统
- ASRT语音识别项目
- DHU deeplearning 深度学习处理文本数据 章节阶测
- PHP:案例2--商品价格计算(案例分析+设计思路+知识点讲解+源码+结果展示)
- 七牛云 RTN:基于 WebRTC 零基础搭建实时音视频平台
- 董明珠如何渗透珠海银隆 联手万达等企业拿下22%股权