#371. 微信

微信

问题描述

Farmer John 有 N 头奶牛,编号为 1 ~ N。

奶牛们天天聚在一起聊天,严重影响了她们的产奶量。John 决定把她们分到不同的牛圈里。

奶牛们听到这个消息,赶快和自己聊得好的朋友互加了微信好友。

John 还要去开发农田,这个任务落在了奶牛 Bessie 的头上。

为了让 John 感觉自己很用心地在完成这个任务,Bessie 要把所有奶牛分到尽可能多的牛圈中。但奶牛们也提出了要求:如果要把两头奶牛分到不同的牛圈中,那么她们俩一定要互为微信好友。

Bessie 想知道,在满足奶牛们要求的前提下,最多可以把奶牛们分到多少个牛圈?

输入格式

第一行:两个整数 N,M。

接下来 M 行:每行两个整数 x 和 y,表示奶牛 x 和奶牛 y 互为微信好友。

输出格式

第一行:一个整数 T,表示 Bessie 最多可以将奶牛分到的牛圈数。

第二行:包含 T 个整数,表示每个牛圈里的奶牛数目,按从小到大顺序输出。如果有多种方案,输出任意一种即可。

样例输入

4 5
1 2
2 3
3 4
4 1
3 1

样例输出

3
1 1 2

数据范围

30%30\% 的数据:2N1021M5×1031x<yN2 ≤ N ≤ 10^2,1 ≤ M ≤ 5×10^3,1 ≤ x < y ≤ N

50%50\% 的数据:2N1031M5×1051x<yN2 ≤ N ≤ 10^3,1 ≤ M ≤ 5×10^5,1 ≤ x < y ≤ N

100%100\% 的数据:2N1051M2×1061x<yN2 ≤ N ≤ 10^5,1 ≤ M ≤ 2×10^6,1 ≤ x < y ≤ N