HDU 1213 How Many Tables(并查集模板)
来源:互联网 发布:日本历史教科书 知乎 编辑:程序博客网 时间:2024/06/05 15:58
How Many Tables
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3437 Accepted Submission(s): 1544
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.
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
每一次如果可以并,就将总桌子数减一,简单的并查集模板题
#include <iostream>#include <cstring>#include <stack>#include <cstdio>#include <cmath>#include <queue>#include <algorithm>#include <vector>#include <set>#include <map>#include<string>const double eps=1e-8;const double PI=acos(-1.0);using namespace std;const int MAX=30000;int fa[MAX+5];int ranks[MAX+5];int find_parent(int x){ if(x!=fa[x]) fa[x]=find_parent(fa[x]); return fa[x];}int union_set(int x,int y){ x=find_parent(x); y=find_parent(y); if(x!=y){ fa[x]=y; return 1; } return 0;}int main(){ int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d%d",&n,&m); for(int i=0;i<=n;i++) fa[i]=i; int a,b; int cou=n; for(int i=0;i<m;i++){ scanf("%d %d",&a,&b); if(union_set(a,b)) cou--; } cout<<cou<<endl; } return 0;}
阅读全文
0 0
- 【HDU 1213】How many tables(并查集模板)
- HDU 1213 How Many Tables(并查集模板)
- HDU 1213 How Many Tables(并查集)
- hdu 1213 How Many Tables(并查集练习)
- [ACM] hdu 1213 How Many Tables(并查集)
- [ACM] hdu 1213 How Many Tables(并查集)
- hdu 1213 How Many Tables(并查集学习)
- HDU-#1213 How Many Tables (并查集)
- HDU - 1213 How Many Tables (简单并查集)
- HDU 1213 How Many Tables(并查集)
- HDU 1213 How Many Tables (并查集)
- HDU 1213【】How Many Tables(并查集)
- hdu 1213 How Many Tables(并查集)
- hdu 1213 How Many Tables (并查集)
- hdu 1213 How Many Tables(并查集算法)
- HDU 1213 How Many Tables(并查集)
- HDU-1213 How Many Tables(并查集)
- HDU 1213 How Many Tables(并查集)
- [LeetCode] 14. Longest Common Prefix
- 【C++】运算符重载
- c++ 构造函数
- 数据库与文件进行数据存取的区别
- POJ 3268
- HDU 1213 How Many Tables(并查集模板)
- Java设计模式之工厂模式
- 11gr2 rac WRH$_ACTIVE_SESSION_HISTORY未自动清理导致SYSAUX空间过度增长
- 0-1背包问题
- Shell实现斐波那契数列、希尔排序
- 从网页中提取图片到本地
- DHCP(Dynamic Host Configuration Protocol)
- 学习使用spyder(python IDE)
- POJ 2886 Who Gets the Most Candies?【线段树单点更新+反素数打表】【好题】