并查集(找祖先)(可以将集合当成网或无向图)
#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 ...
最新文章
- 41款实用工具,数据获取、清洗、建模、可视化都有了
- mysql sqlserver对比_很用心的写了 9 道 MySQL 面试题
- eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
- 世界无烟日丨如何科学戒烟?
- ifconfig 命令找不到解决
- php项目从本地apache移到linux的nginx上,遇到的一些访问权限和报错的问题。
- SQL2000自动备份
- 素数环-dfs回溯+二维数组记录(c++实现)
- ai预测占比_2019-2021年中国AI芯片市场预测与展望数据
- 万年历c语言设计报告,C语言实训题目设计报告 万年历
- 6个好用的Web开发工具
- 2020年Java面试100题
- 我关于读书的一点小体会
- 量化投资学习——股票数据接口的汇总和整理
- 一款用VBS编写的修仙风格打怪游戏
- 使用VC++6.0创建.cpp文件工程
- Nginx自动跳转到带www域名规则配置、Nginx多域名向主域名跳转
- 《设计模式》——接口隔离原则
- android 11.0 12.0SystemUI 状态栏下拉快捷添加截图快捷开关
- 机器学习H2O AI框架简介
热门文章
- 网络攻防技术与实践笔记-信息收集技术手段
- eclipse 找不到configure working sets选项
- nokia n1 android 6,诺基亚首款安卓平板,Nokia N1正式发布
- nokia 7 Android8,全面屏+原生安卓8.0:NOKIA 诺基亚 发布 Nokia 7 Plus 手机
- 如何有效的维权,这些投诉平台你可能用得上
- drtek收音机使用说明_车载收音机按键图解说明,老式车载收音机说明书
- ftp报错Could not parse response code. Server Reply ssh
- Deflate数据格式分析(RFC-1951)
- java 接口向上转型_JAVA-向上转型与向下转型在接口中的应用
- Eclipse安装插件时,总卡住