2016年小米校招笔试第三题(西安站)

3 假如已知有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个朋友圈。
参考解法(c/c++版):<Q:316190672,欢迎交流>
// 简单的并查集应用
#include<stdio.h>
#include<stdlib.h>
int set[5];inline int find(int x)           //带路径优化的并查集查找算法
{int i, j, r;r = x;while (set[r] != r)r = set[r];i = x;while (i != r){j = set[i];set[i] = r;i = j;}return r;
}
inline void merge(int x, int y)     //优化的并查集归并算法
{int t = find(x);int h = find(y);if (t < h)set[h] = t;elseset[t] = h;
}int friends(int n, int m, int r[11][2])
{int i, count;for (i = 1; i <= n; ++i)    //初始化并查集,各点为孤立点,分支数为n set[i] = i;for (i = 0; i < m; ++i)merge(r[i][0], r[i][1]);count = 0;for (i = 1; i <= n; ++i){if (set[i] == i)++count;}return count;
}int main(void){/* int r[11][2] = { { 1, 5 }, { 3, 5 }, { 4, 5 }, { 1, 4 }, { 5, 6 }, { 8, 1 }, { 9, 20 }, { 98, 11 }, { 13, 76 }, { 98, 77 }, { 2, 1 } };*/int r[5][2] = { { 1, 2 }, { 2, 3 }, {4,5}};int i;for (i = 0; i < sizeof(r[5][2]) / sizeof(r[0]);i++){merge(r[i][0],r[i][1]);}printf("%d\n",friends(5, 3, r));system("PAUSE");return 0;
}

运行结果:

【小米笔试题】朋友圈问题-并查集解法相关推荐

  1. 2013年小米校园招聘笔试题-朋友圈

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

  2. leetcode547. 朋友圈(并查集)

    班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的集合. ...

  3. 奇怪的朋友圈(并查集)

    小生的好友列表里有n个人,任何两个认识的人不是朋友就是敌人,而且满足:①我朋友的朋友是我的朋友:②我敌人的敌人是我的朋友.所有是朋友的人组成一个团伙.现在,小生拥有关于这n个人的m条信息(即某两个人是 ...

  4. java并查集找朋友圈_并查集求朋友圈最大人数

    #include #include using namespace std ; int findRoot( int set[ ], int s ) { if (s == set[s]) return ...

  5. 并查集——小米笔试题求朋友圈个数,分小组个数

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

  6. bars 除障句完整_简单的治愈系晚安朋友圈问候语锦集83句

    简单的治愈系晚安朋友圈问候语锦集83句 你终究会明白,要走的人留不住,装睡的人叫不醒,不爱你的人你永远感动不了.晚安!以下是小编搜索整理的治愈系晚安问候语83句,欢迎阅读. 1.当夜幕降临,我开始祈祷 ...

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

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

  8. 问题 1433: [蓝桥杯][历届试题]危险系数(并查集and暴力)

    问题 1433: [蓝桥杯][历届试题]危险系数 时间限制: 1Sec 内存限制: 128MB 提交: 123 解决: 39 题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的 ...

  9. 1013 Battle Over Cities(并查集解法)

    关于背景的介绍见1013 Battle Over Cities(图的DFS解法) DFS就是不算特定结点后数连通子图的总数,再减一.我想着那么并查集就是数不算特定节点后,集合元素(根)的个数.但是我弄 ...

最新文章

  1. 企业级Nginx服务基础到架构优化详解--25条
  2. 技术随笔 查找速度最快的Google IP
  3. oracle 树状结构一直出现不了_深入解析Oracle ASSM 段头块(PAGETABLE SEGMENT HEADER)结构...
  4. [hdu5270]按位统计,容斥,归并
  5. 1-STM32+W5500+GPRS物联网开发基础篇-工控板简介
  6. 关于redis的几点思考
  7. java 树最大距离_寻找二叉树最远的叶子结点(实例讲解)
  8. MK60单片机开发环境-IAR Embedded Workbench的搭建
  9. SpringBoot从入门到精通(全)
  10. excel公式编辑器_让同事看傻,用Excel制作 “抽奖”小软件
  11. 《灵飞经》①洪武天下 第三章 东岛三尊
  12. “Stream has already been operated upon or closed” Exception in Java
  13. 板内盘中孔设计狂飙,细密间距线路中招
  14. Opensea空投详细专业教程
  15. 【数据库查询--计算机、电脑系列】--查询价格最高的打印机型号。
  16. https://www.toutiao.com/a6457425756212429325/?tt_from=mobile_qqutm_campaign=client_shareapp=news_a
  17. Java代码评审歪诗!让你写出更加优秀的代码!
  18. DS-LITE相关知识点
  19. 使用设备树给DM9000网卡_触摸屏指定中断
  20. html音频base64编码,录音文件与Base64编码相互转换的方法

热门文章

  1. 资讯|WebRTC M91 更新
  2. 技术干货 | 如何在 Electron 上实现 IM SDK 聊天消息全文检索
  3. 视频直播技术:最大限度保障流畅性和清晰度
  4. com.android.dex.DexIndexOverflowException: Cannot merge new index 66299 into a non-jumbo instruction
  5. MySQL备份命令mysqldump参数说明与示例
  6. golang文件操作
  7. Java反射理解与案例
  8. 项目案例分享四:DC升级后Sysvol停止复制,日志报13508
  9. Daily Scrum4 11.6
  10. C#使用剪切板复制程序