班上有 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。
注意:
    1.N 在[1,200]的范围内。
    2.对于所有学生,有M[i][i] = 1。
    3.如果有M[i][j] = 1,则有M[j][i] = 1。
详见:https://leetcode.com/problems/friend-circles/description/

C++:

class Solution {
public:
int findCircleNum(vector<vector<int>>& M)
{
int n = M.size(), res = 0;
vector<bool> visited(n, false);
for (int i = 0; i < n; ++i)
{
if (visited[i])
{
continue;
}
helper(M, i, visited);
++res;
}
return res;
}
void helper(vector<vector<int>>& M, int k, vector<bool>& visited)
{
visited[k] = true;
for (int i = 0; i < M.size(); ++i)
{
if (!M[k][i] || visited[i])
{
continue;
}
helper(M, i, visited);
}
}
};

参考:http://www.cnblogs.com/grandyang/p/6686983.html

最新文章

  1. maven配置远程仓库
  2. IIS发布文件出现:未能加载文件或程序集“xxxx”或它的某一个依赖项。试图加载格式不正确的程序。
  3. Facade设计模式
  4. js函数和运算符
  5. OGNL和ValueStack
  6. codeforces 486B.OR in Matrix 解题报告
  7. ubuntu14.04LS中安装SSH
  8. CSU 1809 Parenthesis(线段树+前缀和)
  9. virt viewer Usbredir USB重定向
  10. 【HDOJ】2266 How Many Equations Can You Find
  11. 两行代码搞定Android视图扩散切换效果
  12. HTML(总结)
  13. 下拉js的实现
  14. 当git上文件名大小写重命名的修改时(git大小写敏感/默认不敏感),如何重命名并提交
  15. ML(5)——神经网络2(BP反向传播)
  16. asp.net操作cookie类,包含datatable批量存入cookie
  17. Docker 学习应用篇之三: Docker的简单实用
  18. rabbitmq 集群安装
  19. 动态页面技术之JSP
  20. 洛谷P3942将军令

热门文章

  1. jenkins页面不刷新,设置tomcat缓存
  2. 重新记录 ansible操作hadoop用户的问题
  3. 生成chm格式帮助文档的步骤
  4. 【转载】String和StringBuffer的区别,以及StringBuffer的常用方法介绍
  5. tflearn 中文汉字识别模型试验汇总
  6. mysql 数据库修改用户名和密码
  7. hadoop应用场景
  8. 如何应用 AutoIt 修改本机的防火墙配置?(开启,关闭防火墙,添加程序信任到防火墙)
  9. could not get wglGetExtensionsStringARB
  10. KNN分类算法--python实现