博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电1213--How Many Tables(并查集)
阅读量:7037 次
发布时间:2019-06-28

本文共 2121 字,大约阅读时间需要 7 分钟。

How Many Tables

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 18006    Accepted Submission(s): 8856

Problem Description
Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, and all the friends do not want to stay with strangers.
One important rule for this problem is that if I tell you A knows B, and B knows C, that means A, B, C know each other, so they can stay in one table.
For example: If I tell you A knows B, B knows C, and D knows E, so A, B, C can stay in one table, and D, E have to stay in the other one. So Ignatius needs 2 tables at least.
 

 

Input
The input starts with an integer T(1<=T<=25) which indicate the number of test cases. Then T test cases follow. Each test case starts with two integers N and M(1<=N,M<=1000). N indicates the number of friends, the friends are marked from 1 to N. Then M lines follow. Each line consists of two integers A and B(A!=B), that means friend A and friend B know each other. There will be a blank line between two cases.
 

 

Output
For each test case, just output how many tables Ignatius needs at least. Do NOT print any blanks.
 

 

Sample Input
2
5 3
1 2 2
3 4 5
 
5
1 2 5
 

 

Sample Output
2
4
 

 

Author
Ignatius.L
 

 

Source
 

 

Recommend
Eddy   |   We have carefully selected several similar problems for you:            
//格式略坑;
#include 
int father[1010];int find(int a){ int k, j, r; r = a ; while(r != father[r]) r = father[r]; k = a; while(k != r) { j = father[k]; father[k] = r; k = j; } return r;} /*int find(int a){ while(father[a] != a) father[a] = find(father[a]); return father[a];} */void mercy(int a, int b){ int p = find(a); int q = find(b); if(p != q) father[p] = q;}int main(){ int i, t; scanf("%d", &t); while(t--) { int n, m, a, b; scanf("%d %d", &n, &m); for(i=1; i<=n; i++) father[i] = i; for(i=0; i

 

转载于:https://www.cnblogs.com/soTired/p/4679585.html

你可能感兴趣的文章
sbt解析spark依赖报错
查看>>
Passcode
查看>>
TapKu Graph
查看>>
面试需要的基础知识-合并排序数组
查看>>
关于Unity 2018的实体组件系统(ECS)一
查看>>
Echarts---添加渐变功能
查看>>
linux 下解压命令大全
查看>>
深入了解 Linux下安装DNS+Sendmail服务
查看>>
python在类中实现swith case功能
查看>>
SpringCloud学习系列之一 ----- 搭建一个高可用的注册中心(Eureka)
查看>>
leetcode Sort List
查看>>
Maven com.sun.jdmk:jmxtools:jar 下载不下来
查看>>
DevExpress之Skin自定义使用
查看>>
可变参数
查看>>
[日推荐]『饿了么外卖服务』饿了么官方小程序,无需下载安装!
查看>>
JavaScript 作用域
查看>>
Linux Ubuntu 16.04 主机名设置
查看>>
CCNP 静态路由
查看>>
单链表二[不带头节点链表]
查看>>
Html中居中问题小结
查看>>