LeetCode 547. 朋友圈(图的遍历BFS DFS)
文章目录
- 1. 题目
- 2. 解题
- 2.1 BFS 广度优先
- 2.2 DFS 深度优先
1. 题目
问有几个连通网络
2. 解题
2.1 BFS 广度优先
参考图的数据结构
class Solution {public:int findCircleNum(vector<vector<int>>& M) {int n = M.size(), groups = 0, i;bool visited[n] = {false};for(i = 0; i < n; ++i){if(!visited[i]){bfs(M, visited, n, i);++groups;}}return groups;}void bfs(vector<vector<int>>& M, bool *visited, int &n, int idx) {queue<int> q;q.push(idx);visited[idx] = true;int i, j;while(!q.empty()){i = q.front();q.pop();for(j = 0; j < n; ++j){if(M[i][j] && !visited[j]){visited[j] = true;q.push(j);}}}}
};
2.2 DFS 深度优先
参考图的DFS,还可以不用递归的写法,见前面链接。
class Solution {public:int findCircleNum(vector<vector<int>>& M) {int n = M.size(), groups = 0, i;bool visited[n] = {false};for(i = 0; i < n; ++i){if(!visited[i]){dfs(M, visited, n, i);++groups;}}return groups;}void dfs(vector<vector<int>>& M, bool *visited, int &n, int idx) {visited[idx] = true;for(int j = 0; j < n; ++j){if(M[idx][j] && !visited[j]){dfs(M, visited, n, j);}}}
};
LeetCode 547. 朋友圈(图的遍历BFS DFS)相关推荐
- leetcode 547. 朋友圈 C语言
班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的集合. ...
- 2021-07-01:并查集,200岛屿问题,547朋友圈问题
并查集: 并查集的初始化: 自己的root先初始化为自己. 如果需要合并ab, 则把b的老大指向a 并查集优化1: 需要多创建一个数据结构rank去查看深度 将短链的root接在长链上,降低查找深度 ...
- 【数据结构笔记21】图的遍历,DFS与BFS,连通图
本次笔记内容: 6.2.1 图的遍历 - DFS 6.2.2 图的遍历 - BFS 6.2.3 图的遍历 - 为什么需要两种遍历 6.2.4 图的遍历 - 图连不通怎么办? 文章目录 深度优先搜索(D ...
- 力扣 547. 朋友圈 c语言 三种解法 深搜 广搜 并查集。
题目: 并查集: /*力扣 547 朋友圈 并查集 c语言 2020/12/14 1:04 by ksks14*/ /*初始化 查找 合并*/ #define maxsize 10000 int fl ...
- 7.9模拟赛T1图的遍历(dfs)
图的遍历(dfs) [题目描述] 对于一个有向图G来说,我们存在一个经典的遍历算法,就是DFS (深度优先搜索遍历).将G以1号点为起点进行DFS后,我们可以 得到G的一棵DFS遍历树T.就此,我们可 ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- 图的遍历 BFS遍历(深学思维)
前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 问题描述: 马上到寒假了,JXY准备去n大城市游玩.这些城市之间有些有航线,有些没有.由于JXY特别懒,现在他想请一个更蒟蒻的人AY ...
- [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]
[问题描述][中等] [解答思路] 1. DFS 深度优先遍历 时间复杂度:O(N+M) 空间复杂度:O(N) class Solution {private static final int UNC ...
- LeetCode 694. 不同岛屿的数量(BFS/DFS+set)
文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给定一个非空01二维数组表示的网格,一个岛屿由四连通(上.下.左.右四个方向)的 1 组成,你可以认为网格的四周被海水包围 ...
最新文章
- python拆堆和堆叠的操作_python - 如何合并不同的DFS并堆叠值? - 堆栈内存溢出
- 事务概念和事务四大特性和隔离级别
- oracle身份管理器,分析Oracle身份管理器的各个元素(下)
- iOS使用shell脚本注入混淆内容
- CUDA编程之:cudaMemcpy()函数
- linux 计算机概论 Linux介绍
- python3.9性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型
- NeHe OpenGL教程 01 创建OpenGL窗口
- Vue CLI安装 Vue项目创建 Vue Devtools安装
- Mysql 高负载排查思路
- JS制作一个简单的网页倒计时器
- maya表面种植物体插件 Plant Objects on surface v1.0 下载及教程
- flutter 图形验证码
- 微信小程序导出zip、excel、word、png到手机
- 新生儿取名:撩人于无形的女宝宝名字,任你挑选
- wcdma码片速率_WCDMA中3.84M码片速率的由来
- 服务器运维1-failed to start LSB
- git提交代码设置某些文件不可上传
- 随性的很-python基础 1
- HQChart使用教程30-K线图如何对接第3方数据20-信息地雷公告数据
热门文章
- QT:QObject 简单介绍
- 什么可以作为gcroot_面包果既能当水果又可以作为粮食,国内却无法普及,这是为什么?...
- java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...
- 交流电的有效值rms值_【电工基础知识:三、正弦交流电的产生】2正弦交流电的三要素...
- 010. 使用.net框架提供的属性
- Spring的@Scheduled任务调度
- elasticsearch threadpool
- 第十七节(is-a 、is-like-a 、has-a,包和 import )
- oracle 重建 sys密码文件
- PHP学习之路(二)让我们开始环境搭建(Windows篇)