leetcode 547. 朋友圈 C语言
班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。
给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。
示例 1:
输入:
[[1,1,0],
[1,1,0],
[0,0,1]]
输出: 2
说明:已知学生0和学生1互为朋友,他们在一个朋友圈。
第2个学生自己在一个朋友圈。所以返回2。
示例 2:
输入:
[[1,1,0],
[1,1,1],
[0,1,1]]
输出: 1
说明:已知学生0和学生1互为朋友,学生1和学生2互为朋友,所以学生0和学生2也是朋友,所以他们三个在一个朋友圈,返回1。
注意:
N 在[1,200]的范围内。
对于所有学生,有M[i][i] = 1。
如果有M[i][j] = 1,则有M[j][i] = 1。
简单的并查集问题
#define MAX_STUDENT 200// 记录节点的祖父节点
int g_father[MAX_STUDENT];// 并查集
// 返回祖父节点
int unionSearch(int id)
{int son;int temp;// 如果祖父节点是自己,直接返回if (g_father[id] == id) {return id;}son = id;while (g_father[id] != id) {// 直到找到祖父节点id = g_father[id];}// 压缩算法// 把这条链上的节点的祖父节点都设置为id// 使层级变成两层while (son != g_father[id]) {temp = son;son = g_father[id];g_father[temp] = id;}return id;
}int findCircleNum(int** M, int MSize, int* MColSize)
{int i;int j;int index1;int index2;int friendCircleNum = MSize;for (i = 0; i < MSize; i++) {// 先将祖父节点初始化成自己g_father[i] = i;}for (i = 0; i < MSize; i++) {for (j = 0; j < MSize; j++) {if ((i != j) && (M[i][j] == 1)) {// 寻找i、j的祖父节点index1 = unionSearch(i);index2 = unionSearch(j);// 如果他们的祖父节点不相同if (index1 != index2) {// 把他们关联起来g_father[index1] = index2;friendCircleNum--;} }}}return friendCircleNum;
}
leetcode 547. 朋友圈 C语言相关推荐
- 力扣 547. 朋友圈 c语言 三种解法 深搜 广搜 并查集。
题目: 并查集: /*力扣 547 朋友圈 并查集 c语言 2020/12/14 1:04 by ksks14*/ /*初始化 查找 合并*/ #define maxsize 10000 int fl ...
- LeetCode 547. 朋友圈(图的遍历BFS DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 广度优先 2.2 DFS 深度优先 1. 题目 问有几个连通网络 2. 解题 2.1 BFS 广度优先 参考图的数据结构 class Solution ...
- 2021-07-01:并查集,200岛屿问题,547朋友圈问题
并查集: 并查集的初始化: 自己的root先初始化为自己. 如果需要合并ab, 则把b的老大指向a 并查集优化1: 需要多创建一个数据结构rank去查看深度 将短链的root接在长链上,降低查找深度 ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- 每天都刷朋友圈,那你知道并查集吗?
微信大概是我们每天必须接触的一个APP之一,公交上.地铁上,异或工作休息时,我们都忍不住刷刷朋友圈,看看一些点赞之交的朋友当天又经历了什么.相较于QQ,微信的一个特点之一就是:除非好友的好友也是你的好 ...
- [LeetCode]547. Friend Circles朋友圈数量--不相邻子图问题
/*思路就是遍历所有人,对于每一个人,寻找他的好友,找到好友后再找这个好友的好友,这样深度优先遍历下去,设置一个flag记录是否已经遍历了这个人.其实dfs真正有用的是flag这个变量,因为如果m个人 ...
- c语言朋友圈通信录的设计,手把手教你搞定高逼格朋友圈文案
如何给朋友圈照片配上高逼格的文字? 最近 有网友对此课题发起了里程碑似的挑战 这里 小编将此文章分享给各位客官 读完这篇 「中国当代艺术编瞎话速成指南」 你就可以摇身一变 跻身新一代中国前卫艺术行业从 ...
- python语言编写一个生成九宫格图片的代码_用Python一键生成炫酷九宫格图片,火了朋友圈...
作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...
- r语言list添加元素_Redis数据结构 List 类型】List 类型生产中的应用 消息队列、排行榜、朋友圈、监控程序的实现...
点击蓝色"不太灵光的程序员"关注我哟加个"星标",每天上午 08:00,干货推送!昨天有很多同学关注,感谢你们的支持.本文依旧会对学习内容进行拆分,建议阅读时间 ...
最新文章
- 检查当前ORACLE连接数
- Transformer又出新变体∞-former:无限长期记忆,任意长度上下文
- CSP认证201509-3	模板生成系统[C++题解]:字符串处理、模拟、哈希表、引号里面有空格的字符串怎么读入
- Anywhere 随启随用的静态文件服务器
- USACO 3.2.3 Spin
- python爬虫金融数据_python爬虫项目-爬取雪球网金融数据(关注、持续更新)
- Matlab小波工具箱的使用2
- 逆向某某单车-iOS客户端
- c++14 0 名字空间和条件编译
- warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
- Linux 添加IPv6策略路由,26-IPv6策略路由配置
- 宝峰c1对讲机写频软件_宝峰对讲机写频软件(BF-480 编程软件)
- 十分钟接入WO+能力共享平台
- java 拼图_Java 9:“拼图计划终于给了我们急需的Java安全带”
- win10怎么打开网络计算机,Win10怎么启用网络发现?
- H3C交换机环路监测,NTP时间同步。
- 赵小楼《天道》《遥远的救世主》深度解析(72)说点人性不喜欢听的
- URL传参多了%7Bfid%7D字符,在我使用{id}传参时拼接了多余字符串
- 程序员吐槽:四年被三家公司裁员补偿,网友:去BAT转转?
- 2020usnews计算机排名布朗,2020usnews布朗大学排名怎么样?
热门文章
- 每日分享(采集网站访客流量统计程序)
- Bugku Misc 图穷匕见
- Linux 系统vim练习简单的 shell script
- 推荐一个windows下使用的无广告解压缩软件
- Error in nextTick: “TypeError: Cannot read property ‘xxx‘ of undefined“
- 【行为分析】(二)前端埋点实现及原理分析
- 风力发电会影响气候?
- 揭秘团队业绩不好的原因
- 教你cad版本怎么用转换器转换操作
- 【BLE】CC2541与CC2540的区别