how many tables(并查集)
来源:互联网 发布:淘宝店最高收入多少 编辑:程序博客网 时间:2024/06/06 03:12
How Many Tables
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 19 Solved: 12
[Submit][Status][Web Board]
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
25 31 22 34 55 12 5
Sample Output
24
HINT
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>using namespace std;#define MAX 100001int pre[1001];int find(int a){ int r=a; while(r!=pre[r]) r=pre[r]; int i=a,j; while(i!=r) { j=pre[i]; pre[i]=r; i=j; } return r;}void join(int a,int b){ int x=find(a); int y=find(b); if(x!=y) pre[x]=y;}void slove(){ for(int i=0;i<=1001;i++) pre[i]=i;}int main(){ int t; cin>>t; while(t--) { slove(); int m,n; int x,y; cin>>m>>n; while(n--) { cin>>x>>y; join(x,y); } int count; int i; for(count=0,i=1;i<=m;i++) //假设现在一人一桌,现在如果谁的pre[i]!=i;就说明i到别人的桌上去了 //现在只要看谁还在自己的桌上就说明还需要几桌 {// cout<<pre[i]<<" "; if(pre[i]==i) count++; } cout<<count<<endl;// cout<<endl; } return 0;}
- 【hdu1213】How Many Tables【并查集】
- How Many Tables(并查集)
- How Many Tables hdu1213 并查集
- hdu1213(How Many Tables 并查集)
- hdu_1213 how many tables (并查集)
- Hdu1213 - How Many Tables - 并查集
- HDU1213 How Many Tables 【并查集】
- 并查集---How Many Tables
- HDU1213 How Many Tables【并查集】
- HDU1213 How Many Tables 【并查集】
- [并查集]How Many Tables
- hdu1213 How Many Tables(并查集)
- hdoj How Many Tables【并查集】
- hdoj1213 How many tables?(并查集)
- How Many Tables-并查集
- HDOJ1213 How Many Tables(并查集)
- How Many Tables--hdu1213(并查集)
- HDU1213-How Many Tables 并查集
- bzoj3572: [Hnoi2014]世界树
- 几个比较好的android入门级博客
- 对金玺曾版《Unity3D手机游戏开发》第三章“第一人称射击游戏”修改,使支持僵尸连续攻击
- 我的学习之旅
- freopen()函数的使用
- how many tables(并查集)
- uCOS-II在PC上的移植(使用VS2015)
- What、Why、How?解读Webpack官方文档
- Android listview滚动条隐藏后依然显示
- 将整数A转换为B
- OpenCV【1】---OpenCV2.4.11 Build for QT 5.5.0 of Win7
- 山东省第五届蓝桥杯 ///标题:李白打酒//c/c++组
- BFPTR算法(中位数的中位数算法)求n个数中第k大的数
- HDU 1756 Cupid's Arrow(判断点是否在任意多边形上且包括边)