给定一个二维的 0-1 矩阵,如果第 (i, j) 位置是 1,则表示第 i 个人和第 j 个人是朋友。已知朋友关系是可以传递的,即如果 a 是 b 的朋友,b 是 c 的朋友,那么 a 和 c 也是朋友,换言之这三个人处于同一个朋友圈之内。求一共有多少个朋友圈。
输入
输入是一个二维数组
输出
输出是一个整数,表示朋友圈数量。
样例
标准输入 复制文本 |
[[1,1,0], [1,1,0], [0,0,1]] |
标准输出 复制文本 |
2 |
提示
对于题目 695,图的表示方法是,每个位置代表一个节点,每个节点与上下左右四个节点相邻。而在这一道题里面,每一行(列)表示一个节点,它的每列(行)表示是否存在一个相邻节点。因此题目 695 拥有 m × n 个节点,每个节点有 4 条边;而本题拥有 n 个节点,每个节点最多有 n 条边,表示和所有人都是朋友,最少可以有 1 条边,表示自己与自己相连。当清楚了图的表示方法后,这道题与题目 695 本质上是同一道题:搜索朋友圈(岛屿)的个数(最大面积)。我们这里采用递归的第一种写法。