#6833. 探险地图

探险地图

探险地图

题目描述

小明参加了一场探险比赛。

比赛地图由许多 探险站点 组成,一共有 n 个站点,编号为 1 ~ n

有些站点之间存在一条双向道路,如果两个站点之间有道路,那么探险者可以在这两个站点之间来回通行。

例如:

  • 站点 12 之间有道路;
  • 站点 23 之间有道路;

那么从站点 1 出发,可以经过 2 到达 3


比赛地图中可能存在多个互相无法到达的区域。

如果一组站点满足:

  1. 组内任意两个站点之间都可以通过若干条道路相互到达;
  2. 不能再加入其他站点使条件继续成立;

那么这组站点称为一个 独立探险区域

现在请你帮助小明统计:

  1. 地图中一共有多少个独立探险区域;
  2. 每个区域包含哪些站点编号。

输入格式

第一行包含两个整数:

n m

表示:

  • n 个探险站点;
  • m 条双向道路。

接下来 m 行,每行两个整数:

u v

表示站点 u 和站点 v 之间存在一条道路。

注意:

  • 道路是双向的;
  • 两个站点之间最多只有一条道路;
  • 可能存在没有道路的孤立站点。

输出格式

第一行输出一个整数:

k

表示地图中独立探险区域的数量。

接下来输出 k 行:

每行表示一个区域中的站点编号。

要求:

  • 每个区域内的编号按照从小到大输出;
  • 区域输出顺序按照区域中最小编号从小到大排列。

数据范围

1 ≤ n ≤ 1000
0 ≤ m ≤ n(n-1)/2
1 ≤ u,v ≤ n

样例输入

6 4
1 2
2 3
4 5
6 6

样例输出

3
1 2 3
4 5
6

样例解释

地图如下:

1 —— 2 —— 3


4 —— 5


6

可以发现:

  • 站点 1、2、3 可以互相到达,属于同一个区域;
  • 站点 4、5 可以互相到达,属于同一个区域;
  • 站点 6 没有连接其他站点,单独形成一个区域。

因此共有:

3 个独立探险区域