杭电1213How Many Tables与杭电1232大同小异
2015-11-09 20:47
357 查看
How Many Tables
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 19540 Accepted Submission(s): 9716
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
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.
[align=left]Output[/align]
For each test case, just output how many tables Ignatius needs at least. Do NOT print any blanks.
[align=left]Sample Input[/align]
2 5 3 1 2 2 3 4 5 5 1 2 5
[align=left]Sample Output[/align]
2 4
#include<iostream>
using namespace std;
int arr[1000];
int find(int r)
{
while(r!=arr[r])
r=arr[r];
return r;
}
void judge(int a,int b)
{
int x,y;
x=find(a);
y=find(b);
if(x!=y)
arr[y]=x;
}
int main()
{
int N,M,a,b,ans,i,n;
cin>>n;
while(n--)
{
cin>>N>>M;
for(i=1;i<=N;i++)
arr[i]=i;
int t=0;
for(i=1;i<=M;i++)
{
cin>>a>>b;
judge(a,b);
}
for(i=1;i<=N;i++)
{
if(arr[i]==i)
t++;
}
cout<<t<<endl;
}
return 0;
}
相关文章推荐
- 类的初始化分析要点代码
- svn修改uuid
- 华为OJ题目(三):字符统计
- QT+openGL
- iOS多线程 GCD NSoperation NSThread
- Qt从零开始制作串口调试助手-(第四章、新建“串口配置界面”和“关于界面”)-Creator_Ly
- http://blog.csdn.net/jadyer/article/details/6013743
- 顺序队列的算法操作
- Spring的事务管理对何种异常进行回滚
- 在线支付心得
- android隐式意图激活浏览器
- 给自己~~微语&&歌单
- 理解TCP为什么需要进行三次握手(白话)
- 阿里云服务器配置svn
- HDU 4455 Substrings(递推+优化)
- LightOJ 1017 - Brush (III)(dp)
- lightoj 1297 Largest Box
- 欢迎使用CSDN-markdown编辑器
- 从头认识java-7.6 适配设计模式究竟适配类?还是适配接口?
- win7 eclipse: Could not open Selected VM debug port (8700)