题目描述:

假如已知有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:朋友圈(并查集)相关推荐

  1. 九度OJ 朋友圈 并查集

    题目描述: 假如已知有n个人和m对好友关系(存于数字r).如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈. 假如:n = ...

  2. 京东回应「被薅 7000 万、项目组全体开除」;微信朋友圈屏蔽支付宝集五福;MySQL 8.0.19 发布 | 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  3. 1月14日科技资讯|京东回应「被薅 7000 万、项目组全体开除」;微信朋友圈屏蔽支付宝集五福;MySQL 8.0.19 发布

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧.扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Sty ...

  4. PAT - L1-020. 帅到没朋友(裸并查集)

    L1-020. 帅到没朋友 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为 ...

  5. 朋友圈功能合集来咯!定时发朋友圈,查看朋友圈,朋友圈跟圈,一键转发朋友圈,延迟评论

  6. 力扣 547. 朋友圈 c语言 三种解法 深搜 广搜 并查集。

    题目: 并查集: /*力扣 547 朋友圈 并查集 c语言 2020/12/14 1:04 by ksks14*/ /*初始化 查找 合并*/ #define maxsize 10000 int fl ...

  7. HDU1878 欧拉回路【并查集】

    欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. 路径压缩优化并查集的时间复杂度

    路径压缩优化并查集大家一定很熟练了,那么它的复杂度是多少呢?O(mα(n))O(m\alpha(n))O(mα(n))? 的确,很多人都是这么说的,但是事实上它的复杂度是O(mlog⁡1+m/nn)O ...

  9. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

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

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

最新文章

  1. mysql合并查询结果及为表和字段取别名
  2. 「SAP技术」A项目关联公司间退货STO流程
  3. lodash(一)数组
  4. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
  5. Pycharm 折叠展开代码快捷键
  6. 火山引擎视频云:坚持基础技术创新,打造极致用户体验
  7. P1967,ssl2267-货车运输【树上倍增LCA,最小生成树变形kruskal】
  8. 埃森哲携手阿里云,采用K8s容器云服务为客户提供无限弹性
  9. filter java oauth_java – 带有自定义安全过滤器的Spring Boot OAuth2
  10. DataDir and DirectoryFactory in SolrConfig
  11. 【flink】flink Source Coordinator Thread already exists driving actions Source Coordinator. Existing
  12. 一线互联网公司的前端开发流程
  13. 【牛尔】【小p】这些美容强男的超级秘籍!!!丝般肌肤毛孔看不见,清透小面颊,丝滑小脸蛋儿,你难道不想拥有吗————【收缩毛孔的最佳方法】(一夜之间6万浏览量,大师的感召力和信服力就是强啊!)
  14. android 开关机动画
  15. Html5 Api 实现浏览器全屏
  16. 茅台抢购脚本详细教程, 另已将茅台抢购做成了一个软件
  17. ENVI基于训练样本的决策树地块分类
  18. java 父类子类有同名方法时如何调用
  19. 【Unity-学习-014】EasyAR4.0稀疏空间地图 扫描场景功能
  20. 【GNN】台大李弘毅助教讲解——GNN系列

热门文章

  1. [转] 配置Log4j
  2. zabbix安装详解
  3. java 算法基础之三合并排序法
  4. linux PDF转换为SWF
  5. springsecurity3的验证过程
  6. [生活] 2015年终总结,2016开篇计划
  7. CF991A If at first you don't succeed...
  8. BZOJ3038 上帝造题的七分钟2
  9. Code[VS]1302 小矮人
  10. mysql innodb_large_prefix_那些从MySQL5.6升级到5.7的坑--innodb_large_prefix-阿里云开发者社区...