HDU 1213 how many tables
来源:互联网 发布:互联网公司数据分析 编辑:程序博客网 时间:2024/06/02 01:52
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 Sample Output
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.
25 31 22 34 55 12 5
24#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<queue>using namespace std;int visitor[1002];int already[1002];void chu(int x){for (int i = 1; i <= x; i++){visitor[i] = i;}}int find(int x){if (visitor[x] == x){return x;}else return visitor[x] = find(visitor[x]);}bool friendfind(int x){for (int i = 0; already[i] != 0; i++){if (already[i] == x){return false;}}return true;}int main(){int n;cin >> n;while (n--){int visitor_num, guan;cin >> visitor_num >> guan;int v1, v2;chu(visitor_num);memset(already, 0, sizeof(already));for (int i = 0; i < guan; i++){cin >> v1 >> v2;visitor[find(v1)] = visitor[find(v2)];}int k = 0;for (int i = 1; i <= visitor_num; i++){int temp = find(visitor[i]);if (friendfind(temp)){already[k++] = temp;}}cout << k<<'\n';}return 0;}
//by swust_y_p
0 0
- 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 1213how 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 345. Reverse Vowels of a String
- [勇者闯LeetCode] 13. Roman to Integer
- 转载:应该考虑进行何种测试
- 抢红包
- Project Lombok
- HDU 1213 how many tables
- Android NDK开发初步探索
- Win8安装Rational Rose教程
- centos7 yum安装redis3.2.8
- https 证书
- 蓝桥杯 ALGO-145 算法训练 4-1打印下述图形
- RxJava入门(一)
- 蓝桥杯 ALGO-143 算法训练 字符串变换
- RabbitMQ官网教程1——Hello World