求教:n人中,m对相互认识,认识的人可进一组,最少要多少组?

最近笔试发现有一个问题一直没有解决,罗列了一下内容,有没有大神能解答一下...跪求指教:
以任意语言实现都行,最好能简单说明一下解决方法。
问题大致是这样的:(不用全部解决,能做出一部分或者叙述实现的原理都行,谢谢)
有n个人,之间有一部分人是相互认识的,功能结成m对(同一人可以出现在不同的结对里面)
1、结对的一共多少人?如果相互认识就能进有个组(组员可以拉认识的人进入),最少几组?人数最大的组是有多少人?
2、未能结对的有多少人?

求大神指教!!!
#笔试题目#
全部评论
百度:并查集入门题
点赞 回复 分享
发布于 2019-08-25 21:30
xxx:实际上就是在原有的关系上,在建立一个数组去代表代表各个数字之间的关系,然后通过访问既可以这个关系数组就可以实现对分组等信息的获取。
点赞 回复 分享
发布于 2019-08-28 21:00
裸的并查集,
点赞 回复 分享
发布于 2019-08-25 21:31
和今晚字节第一题一样,dfs bfs即可
点赞 回复 分享
发布于 2019-08-25 21:56
public static void getTotalCircles(int[][] nums, int N) {         boolean[] visited = new boolean[N];         int count = 0;         for (int i = 0; i < N; i++) {             if (!visited[i]) {                 visited[i] = true;                 for (int j = i + 1; j < N; j++) {                     if (nums[i][j] >= 3) {                         visited[j] = true;                         dfs(nums, N, j, visited);                     }                 }                 count++;             }         }         System.out.println(count);     }     private static void dfs(int[][] nums, int N, int before, boolean[] visited) {         for (int i = 0; i < N; i++) {             if (i != before && !visited[i] && nums[before][i] >= 3) {                 visited[i] = true;                 dfs(nums, N, i, visited);             }         }     } DFS
点赞 回复 分享
发布于 2019-08-25 21:40

相关推荐

点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
1
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务