解题思路:和畅通工程类似,问最后还剩下几个不连通的区域。

How Many Tables

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15086    Accepted Submission(s): 7364

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

#include<stdio.h>
int pre[1005];
int find(int root)
{ return root == pre[root] ? root : pre[root] = find(pre[root]); } void unionroot(int root1,int root2)
{
int x,y;
x=find(root1);
y=find(root2);
if(x!=y);
pre[x]=y; } int main()
{
int i,ncase,n,m,tmp,root1,root2,x,y;
scanf("%d",&ncase);
while(ncase--)
{
tmp=0;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
pre[i]=i; while(m--)
{
scanf("%d %d",&root1,&root2);
x=find(root1);
y=find(root2);
unionroot(x,y);
} for(i=1;i<=n;i++)
{
if(pre[i]==i)
tmp++;
}
printf("%d\n",tmp); }
}

  

最新文章

  1. JQuery实战手风琴-遁地龙卷风
  2. PHP检测移动设备类mobile detection使用实例
  3. linux中fork()函数详解(原创!!实例讲解) (转载)
  4. spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable
  5. ThinkPhp之分页
  6. 在云服务器搭建WordPress博客(六)发布和管理文章
  7. 如何查看python selenium的api
  8. Running Central Admin on Multiple Servers within a Farm
  9. 抱怨IT公司人才缺乏?留住现有人才方是正途
  10. sql截取数据库数字字段内容
  11. 一台服务部署多个tomcat注意事项
  12. css中的宽度
  13. 解决linux root 认证失败的问题
  14. JavaSE学习(二):进制转换—数据类型转换—Java运算符
  15. Alpha冲刺! Day4 - 磨刀
  16. ubuntu 容器安装ping ifconfig ip命令
  17. OpenGL学习笔记:Console工程下如何不显示控制台黑窗口只显示Windows窗口
  18. busybox tar 命令支持 tar.gz
  19. 【异常记录(11)】 Web应用程序项目 已配置为使用 IIS。无法访问 元数据库。您没有足够的特权访问计算机上的 IIS 网站
  20. Java读properties文件中文乱码问题的解决方法

热门文章

  1. Centos7 执行firewall-cmd –permanent –add-service=mysql报错“ModuleNotFoundError: No module named &#39;gi&#39;”
  2. Corn Fields 状压动归入门题
  3. node——express实现hello world
  4. 【Git教程】Git教程之分支管理
  5. Project Euler 37 Truncatable primes
  6. 利用Tensorflow训练自定义数据
  7. Spring学习总结(16)——Spring AOP实现执行数据库操作前根据业务来动态切换数据源
  8. Elasticsearch Sliced Scroll分页检索案例分享
  9. 给 string 添加一个 GetInputStream 扩展方法
  10. 鸟书shell 学习笔记(二) shell中正則表達式相关