1945: 小圈子
内存限制:32 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:37
解决:23
题目描述
某校要办一个班级联合活动。班长想把大家都安排好坐位,但是有个问题:并不是所有同学彼此都熟,而且大家都说——
“要是周围都是不认识的人的话,我会紧张的……”
于是班长想知道:至少要分成多少个小桌/小圈子,才能让大家都和自己认识的人坐在一起。
学校里有一条约定俗成的规则:
如果知道同学 A 和同学 B 是认识的,而同学 B 又和同学 C 认识,那就认为 A、B、C 这一整串人彼此都能聊得来,可以分到同一桌。
也就是说,只要能通过一条“认识链”连起来的同学,都算同一个小圈子。
你的任务就是:给出同学之间的“互相认识”情况后,帮班长算一算,至少要分成几桌。
输入
输入以一个整数 T(1 ≤ T ≤ 25)开头,表示有 T 组活动安排。
接下来是 T 组数据,每组数据格式如下:
-
第一行是两个整数 N 和 M(1 ≤ N, M ≤ 1000)。
-
N 表示这次活动有多少位同学参加,同学编号为 1 到 N(可以理解成学校给的出席名单编号)。
-
M 表示接下来会给出多少条“他们两个互相认识”的信息。
-
-
接下来 M 行,每行有两个整数 A 和 B(A ≠ B),表示编号为 A 的同学和编号为 B 的同学彼此认识,因此属于同一个圈子。
两组数据之间有一个空行。
输出
对每一组数据,输出一个整数,表示至少需要分成多少桌。
不要输出多余空格。
样例输入 复制
2
6 4
1 2
2 3
3 4
1 4
8 10
1 2
2 3
5 6
7 5
4 6
3 6
6 7
2 5
2 4
4 3
样例输出 复制
3
2