#L2649. 「POI2007 R1」办公楼 Offices

    ID: 5121 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>图结构搜索BFS数据结构平衡树Hashing补图连通分量邻接矩阵邻接表

「POI2007 R1」办公楼 Offices

题目描述

一个公司有 nn 个雇员,有 mm 对雇员互相留有电话。将雇员分进尽可能多的办公楼里,使得不同办公楼之间的雇员都留有电话,求最大的办公楼个数和对应方案。

输入格式

第一行两个整数 nnmm2n1000002 \le n \le 100\,0001m20000001 \le m \le 2\,000\,000),分别表示雇员的个数和互相留有电话的雇员的个数。雇员从 11nn 编号。

接下来 mm 行,每行两个整数 aia_ibib_i1ai<bin1 \le a_i \lt b_i \le n),表示雇员 aia_ibib_i 互相留有电话。输入数据中每对雇员最多出现一次。

输出格式

第一行输出一个整数,表示办公楼的最大个数。

接下来一行输出一个不降序列,表示各办公楼雇员的个数。

如果有多种可能的答案,输出任意一种。

样例

输入

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

输出

3
1 2 4

样例解释

一种方案是令 44 号雇员在第一个办公楼,5,75,7 号雇员在第二个办公楼,1,2,3,61,2,3,6 号雇员在第三个办公楼。