1362:家庭问题(family)

简介: 1362:家庭问题(family)

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

有n个人,编号为1,2,……n,另外还知道存在K个关系。一个关系的表达为二元组(α,β)形式,表示α,β为同一家庭的成员。

当n,k和k个关系给出之后,求出其中共有多少个家庭、最大的家庭中有多少人?

例如:n=6,k=3,三个关系为(1,2),(1,3),(4,5)

此时,6个人组成三个家庭,即:{1,2,3}为一个家庭,{4,5}为一个家庭,{6}单独为一个家庭,第一个家庭的人数为最多。

【输入】

第一行为n,k二个整数(1≤n≤100)(用空格分隔);

接下来的k行,每行二个整数(用空格分隔)表示关系。

【输出】

二个整数(分别表示家庭个数和最大家庭人数)。

【输入样例】

6  3

1  2

1  3

4  5

【输出样例】

3 3

1. #include <iostream>
2. #include <cstdio>
3. #include <algorithm>
4. using namespace std;
5. int n,k,a,b,q[105];
6. bool book[105][105],vis[105];
7. int fm=0,maxfm=0;
8. void bfs(int m){
9.  int top=1,tail=1;
10.   q[tail]=m;vis[m]=1;
11.   while(tail>=top){
12.     int k=q[top];
13.     top++;
14.     for(int i=1;i<=n;i++)
15.       if(k!=i&&!vis[i]&&book[k][i]){
16.         tail++;
17.         q[tail]=i;
18.         vis[i]=1;
19.       }
20.   }
21.   maxfm=max(maxfm,tail);
22. }
23. int main(int argc, char *argv[])
24. {
25.   scanf("%d %d",&n,&k);
26.   for(int i=1;i<=k;i++){
27.     scanf("%d %d",&a,&b);
28.     book[a][b]=book[b][a]=1;
29.   }
30.   for(int i=1;i<=n;i++)
31.     if(!vis[i]){
32.       bfs(i);fm++;
33.     }   
34.   printf("%d %d\n",fm,maxfm);
35.   return 0;
36. }


相关文章
|
9月前
|
人工智能 自然语言处理 搜索推荐
阿里云携手叫叫,共创儿童学习AI新体验
阿里云携手叫叫,共创儿童学习AI新体验
|
缓存 前端开发 JavaScript
构建高性能单页应用(SPA)的实践与优化
构建高性能单页应用(SPA)的实践与优化
339 7
|
缓存 前端开发 JavaScript
前端技术探索:构建高效、响应式Web应用的秘诀
前端技术探索:构建高效、响应式Web应用的秘诀
302 0
|
JavaScript Apache
Vue升级及版本不匹配解决_Vue packages version mismatch:
Vue升级及版本不匹配解决_Vue packages version mismatch:
472 1
|
存储 机器学习/深度学习 算法
数据结构学习笔记——图的遍历算法(深度优先搜索和广度优先搜索)
数据结构学习笔记——图的遍历算法(深度优先搜索和广度优先搜索)
数据结构学习笔记——图的遍历算法(深度优先搜索和广度优先搜索)
|
Linux Windows 网络安全
远程桌面管理工具比较(转)
一 RemoteDesktopManager (windows到windows的remote的管理)主页:http://sourceforge.net/projects/tscm/特点:开源免费,只能用来管理远程的Windows机器连接。
2082 0
|
11天前
|
数据采集 人工智能 安全