#P14861. [ICPC 2021 Yokohama R] "Even" Division

    ID: 14778 远端评测题 4000ms 1024MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>2021Special Judge生成树ICPC横浜

[ICPC 2021 Yokohama R] "Even" Division

Description

如果你谈论通常意义上的“偶数划分”,它意味着将事物等分。今天,你需要思考一些不同的东西。一个图需要被划分成子图,且每个子图的节点数为偶数,即二的倍数。

你被给予一个具有偶数个节点的无向连通图。给定的图将被划分为子图,使得所有子图都是连通的且具有偶数个节点,直到无法再进行这样的划分为止。图 1.1 展示了一个例子。原始的 8 个节点的图被划分为具有 4、2 和 2 个节点的子图。所有这些子图都具有偶数个节点。

:::align{center}

图 I.1. 一个划分示例(样例输入/输出 1) :::

用数学术语来说,一个图的 偶数划分 是图节点子集 V1,,VkV_1, \dots, V_k 的集合,满足以下条件:

  1. V1VkV_1 \cup \cdots \cup V_k 是输入图的所有节点的集合,且若 iji \neq j,则 ViVj=V_i \cap V_j = \emptyset
  2. 每个 ViV_i 非空,且具有偶数个元素。
  3. 每个 ViV_i 导出一个连通的子图。换句话说,ViV_i 中的任意节点都可以通过仅使用输入图中连接 ViV_i 中两个节点的边相互可达。
  4. 不存在进一步的划分。对于任意 U1U2=ViU_1 \cup U_2 = V_i,用两个集合 U1U_1U2U_2 替换 ViV_i 得到的划分不满足条件 1、2 或 3 中的任意一条。

你的任务是找到给定图的一个 偶数划分

Input Format

输入由单个测试用例组成,格式如下。

$$\begin{aligned} &n\ m \\ &x_1\ y_1 \\ &\vdots \\ &x_m\ y_m \end{aligned}$$

第一行包含两个整数 nnmm。第一个整数 nn (2n1052 \leq n \leq 10^5) 是一个偶数,表示要划分的图的节点数。第二个整数 mm (n1m105n-1 \leq m \leq 10^5) 是图的边数。

图的节点编号从 00n1n-1

随后的 mm 行表示图的边。一行 xi yix_i\ y_i (0xi<yi<n0 \leq x_i < y_i < n) 意味着存在一条连接节点 xix_iyiy_i 的边。没有重复的边。保证输入图是连通的。

Output Format

如果存在给定图的节点集到子集 V1,,VkV_1, \dots, V_k偶数划分,则在输出的第一行打印 kk。接下来的 kk 行应描述子集 V1,,VkV_1, \dots, V_k。子集的顺序无关紧要。其中第 ii 行应以 ViV_i 的大小开头,后跟 ViV_i 中元素的节点编号,用一个空格分隔。节点编号的顺序也无关紧要。

如果有多个偶数划分,其中任意一个都可以接受。

8 9
0 1
1 2
2 3
0 4
1 6
3 7
4 5
5 6
6 7
3
2 3 7
2 4 5
4 0 1 2 6
2 1
0 1
1
2 0 1

Hint

在样例 2 中,原始图节点集的单元素集合本身已经是一个偶数划分。

翻译由 DeepSeek V3 完成