九度 1526:朋友圈(并查集)
题目描述:
假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。
假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,结果为2个朋友圈。
思路
1. 裸的并查集, 回顾下并查集的知识
2. 并查集主要有两个操作, 一个是 merge, 一个是 find. find 用于找到一个集合的标志, merge 用于合并两个集合. 在实际的操作中, 我们只要用 merge 就好了, find 不直接使用
3. find 又有路径压缩的说法, 这是在寻找集合标志的过程中, 使得这条路径上的所有节点到标志的距离都压缩成 1, 使用递归完成
4. 比较来了两个节点 0 1, 我们要做的就是 merge(0,1), 将 0, 1 合并到一个集合中. merge 的实际操作是将两个集合的标志建立父子关系
代码
#include <iostream> #include <stdio.h> using namespace std;int father[100010];int find(int x) {if(father[x] != x) {father[x] = find(father[x]);}return father[x]; }void merge(int a, int b) {int fa = find(a);int fb = find(b);if(fa == fb)return;father[fa] = fb; }int main() {//freopen("testcase.txt", "r", stdin);int n, m;while(scanf("%d", &n) && n != 0) {scanf("%d", &m);for(int i = 1; i <= n; i ++)father[i] = i;int a, b;for(int i = 0; i < m; i ++) {scanf("%d%d", &a, &b);merge(a,b);}int cnt = 0;for(int i = 1; i <= n; i ++) {if(father[i] == i)cnt++;}cout << cnt << endl;}return 0; }
转载于:https://www.cnblogs.com/xinsheng/p/3581057.html
九度 1526:朋友圈(并查集)相关推荐
- 九度OJ 朋友圈 并查集
题目描述: 假如已知有n个人和m对好友关系(存于数字r).如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈. 假如:n = ...
- 京东回应「被薅 7000 万、项目组全体开除」;微信朋友圈屏蔽支付宝集五福;MySQL 8.0.19 发布 | 极客头条...
整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...
- 1月14日科技资讯|京东回应「被薅 7000 万、项目组全体开除」;微信朋友圈屏蔽支付宝集五福;MySQL 8.0.19 发布
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧.扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Sty ...
- PAT - L1-020. 帅到没朋友(裸并查集)
L1-020. 帅到没朋友 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为 ...
- 朋友圈功能合集来咯!定时发朋友圈,查看朋友圈,朋友圈跟圈,一键转发朋友圈,延迟评论
- 力扣 547. 朋友圈 c语言 三种解法 深搜 广搜 并查集。
题目: 并查集: /*力扣 547 朋友圈 并查集 c语言 2020/12/14 1:04 by ksks14*/ /*初始化 查找 合并*/ #define maxsize 10000 int fl ...
- HDU1878 欧拉回路【并查集】
欧拉回路 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 路径压缩优化并查集的时间复杂度
路径压缩优化并查集大家一定很熟练了,那么它的复杂度是多少呢?O(mα(n))O(m\alpha(n))O(mα(n))? 的确,很多人都是这么说的,但是事实上它的复杂度是O(mlog1+m/nn)O ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- 并查集---找朋友圈个数问题,连通度问题,等的有效算法
数据结构方面,你了解并查集么? 上交05年计算机复试 上机 畅通工程问题: 例题1 修路连通问题 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通 ...
最新文章
- mysql合并查询结果及为表和字段取别名
- 「SAP技术」A项目关联公司间退货STO流程
- lodash(一)数组
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
- Pycharm 折叠展开代码快捷键
- 火山引擎视频云:坚持基础技术创新,打造极致用户体验
- P1967,ssl2267-货车运输【树上倍增LCA,最小生成树变形kruskal】
- 埃森哲携手阿里云,采用K8s容器云服务为客户提供无限弹性
- filter java oauth_java – 带有自定义安全过滤器的Spring Boot OAuth2
- DataDir and DirectoryFactory in SolrConfig
- 【flink】flink Source Coordinator Thread already exists driving actions Source Coordinator. Existing
- 一线互联网公司的前端开发流程
- 【牛尔】【小p】这些美容强男的超级秘籍!!!丝般肌肤毛孔看不见,清透小面颊,丝滑小脸蛋儿,你难道不想拥有吗————【收缩毛孔的最佳方法】(一夜之间6万浏览量,大师的感召力和信服力就是强啊!)
- android 开关机动画
- Html5 Api 实现浏览器全屏
- 茅台抢购脚本详细教程, 另已将茅台抢购做成了一个软件
- ENVI基于训练样本的决策树地块分类
- java 父类子类有同名方法时如何调用
- 【Unity-学习-014】EasyAR4.0稀疏空间地图 扫描场景功能
- 【GNN】台大李弘毅助教讲解——GNN系列
热门文章
- [转] 配置Log4j
- zabbix安装详解
- java 算法基础之三合并排序法
- linux PDF转换为SWF
- springsecurity3的验证过程
- [生活] 2015年终总结,2016开篇计划
- CF991A If at first you don't succeed...
- BZOJ3038 上帝造题的七分钟2
- Code[VS]1302 小矮人
- mysql innodb_large_prefix_那些从MySQL5.6升级到5.7的坑--innodb_large_prefix-阿里云开发者社区...