题目描述
译自 POI 2007 Stage 1.「Offices」
一个公司有 $n$ 个雇员,有 $m$ 对雇员互相留有电话。将雇员分进尽可能多的办公楼里,使得不同办公楼之间的雇员都留有电话,求最大的办公楼个数和对应方案。
输入格式
第一行两个整数 $n$ 和 $m$ ($2 \le n \le 100\ 000,1 \le m \le 2\ 000\ 000$),分别表示雇员的个数和互相留有电话的雇员的个数。雇员从 $1$ 到 $n$ 编号。
接下来 $m$ 行每行两个整数 $a_i$ 和 $b_i$ ($1 \le a_i \lt b_i \le n$)表示雇员 $a_i$ 和 $b_i$ 互相留有电话。输入数据中每对雇员最多出现一次。
输出格式
第一行输出一个整数,表示办公楼的最大个数。
接下来一行输出一个不降序列,表示各办公楼雇员的个数。
如果有多种可能的答案,输出任意一种。
样例
input
7 16
1 3
1 4
1 5
2 3
3 4
4 5
4 7
4 6
5 6
6 7
2 4
2 7
2 5
3 5
3 7
1 7
output
3
1 2 4
一种方案是令 $4$ 号雇员在第一个办公楼,$5,7$ 号雇员在第二个办公楼,$1,2,3,6$ 号雇员在第三个办公楼。