文章目录

  • 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)相关推荐

  1. leetcode 547. 朋友圈 C语言

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

  2. 2021-07-01:并查集,200岛屿问题,547朋友圈问题

    并查集: 并查集的初始化: 自己的root先初始化为自己. 如果需要合并ab, 则把b的老大指向a 并查集优化1: 需要多创建一个数据结构rank去查看深度 将短链的root接在长链上,降低查找深度 ...

  3. 【数据结构笔记21】图的遍历,DFS与BFS,连通图

    本次笔记内容: 6.2.1 图的遍历 - DFS 6.2.2 图的遍历 - BFS 6.2.3 图的遍历 - 为什么需要两种遍历 6.2.4 图的遍历 - 图连不通怎么办? 文章目录 深度优先搜索(D ...

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

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

  5. 7.9模拟赛T1图的遍历(dfs)

    图的遍历(dfs) [题目描述] 对于一个有向图G来说,我们存在一个经典的遍历算法,就是DFS (深度优先搜索遍历).将G以1号点为起点进行DFS后,我们可以 得到G的一棵DFS遍历树T.就此,我们可 ...

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

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

  7. 图的遍历 BFS遍历(深学思维)

    前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 问题描述: 马上到寒假了,JXY准备去n大城市游玩.这些城市之间有些有航线,有些没有.由于JXY特别懒,现在他想请一个更蒟蒻的人AY ...

  8. [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]

    [问题描述][中等] [解答思路] 1. DFS 深度优先遍历 时间复杂度:O(N+M) 空间复杂度:O(N) class Solution {private static final int UNC ...

  9. LeetCode 694. 不同岛屿的数量(BFS/DFS+set)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给定一个非空01二维数组表示的网格,一个岛屿由四连通(上.下.左.右四个方向)的 1 组成,你可以认为网格的四周被海水包围 ...

最新文章

  1. python拆堆和堆叠的操作_python - 如何合并不同的DFS并堆叠值? - 堆栈内存溢出
  2. 事务概念和事务四大特性和隔离级别
  3. oracle身份管理器,分析Oracle身份管理器的各个元素(下)
  4. iOS使用shell脚本注入混淆内容
  5. CUDA编程之:cudaMemcpy()函数
  6. linux 计算机概论 Linux介绍
  7. python3.9性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型
  8. NeHe OpenGL教程 01 创建OpenGL窗口
  9. Vue CLI安装 Vue项目创建 Vue Devtools安装
  10. Mysql 高负载排查思路
  11. JS制作一个简单的网页倒计时器
  12. maya表面种植物体插件 Plant Objects on surface v1.0 下载及教程
  13. flutter 图形验证码
  14. 微信小程序导出zip、excel、word、png到手机
  15. 新生儿取名:撩人于无形的女宝宝名字,任你挑选
  16. wcdma码片速率_WCDMA中3.84M码片速率的由来
  17. 服务器运维1-failed to start LSB
  18. git提交代码设置某些文件不可上传
  19. 随性的很-python基础 1
  20. HQChart使用教程30-K线图如何对接第3方数据20-信息地雷公告数据

热门文章

  1. QT:QObject 简单介绍
  2. 什么可以作为gcroot_面包果既能当水果又可以作为粮食,国内却无法普及,这是为什么?...
  3. java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...
  4. 交流电的有效值rms值_【电工基础知识:三、正弦交流电的产生】2正弦交流电的三要素...
  5. 010. 使用.net框架提供的属性
  6. Spring的@Scheduled任务调度
  7. elasticsearch threadpool
  8. 第十七节(is-a 、is-like-a 、has-a,包和 import )
  9. oracle 重建 sys密码文件
  10. PHP学习之路(二)让我们开始环境搭建(Windows篇)