AT_kupc2020_i Coloring Paths
题目描述
有一个包含 $N$ 个顶点、$M$ 条边的无向简单连通图。
该图的顶点编号为 $1$ 到 $N$,边的编号为 $1$ 到 $M$。
第 $i$ 条边 $(1 \le i \le M)$ 连接顶点 $u_i$ 和顶点 $v_i$。
这个图具有如下特殊性质:
- 对于任意一条边 $i\ (1 \le i \le M)$,都存在一条不经过边 $i$ 的、连接 $u_i$ 和 $v_i$ 的路径。
我们将这样的路径称为“边 $i$ 的迂回路径”。一条边的迂回路径可能有多条。
现在要用 $M$ 种颜色(颜色编号为 $1$ 到 $M$),为图中的每一条边选择一种颜色进行染色。此时,必须满足以下条件:
- 连接同一顶点的两条边,必须染成不同的颜色。
- 对于任意一条边,都存在一条该边的迂回路径,且该路径上所经过的所有边所用的颜色种类不超过 $8$ 种。(※)
请你求出一种满足上述条件的染色方案。
此外,对于染色后的图中的每一条边,请你分别求出一条满足上面(※)条件的迂回路径所用到的颜色集合 $T_i$(输出方式较特殊,详见输出格式)。
在下述约束条件下,可以保证一定存在满足条件的染色方案。
输入格式
输入以如下格式从标准输入读入。
> $N$ $M$ $u_1$ $v_1$ $u_2$ $v_2$ $\vdots$ $u_M$ $v_M$
输出格式
请输出一种满足条件的染色方案,格式如下:
第 $1$ 行输出 $M$ 个用空格分隔的整数,表示第 $i$ 条边染的颜色 $C_i$。
第 $i+1$ 行 $(1 \le i \le M)$ 输出一个颜色集合 $T_i$,满足:
- $1 \le |T_i| \le 8$
- 将不属于 $T_i$ 的颜色的边和第 $i$ 条边从图中删除后,顶点 $u_i$ 和 $v_i$ 仍然连通。
输出 $T_i$ 时,先输出 $|T_i|$,然后输出 $T_i$ 中所有颜色 $D_{i,1}, D_{i,2}, \ldots, D_{i,|T_i|}$。
注意,$T_i$ 的存在与问题描述中(※)条件下的边 $i$ 的迂回路径的存在是等价的。
> $C_1$ $C_2$ $\ldots$ $C_M$
> $|T_1|$ $D_{1,1}$ $D_{1,2}$ $\ldots$ $D_{1,|T_1|}$
> $|T_2|$ $D_{2,1}$ $D_{2,2}$ $\ldots$ $D_{2,|T_2|}$
> $\vdots$
> $|T_M|$ $D_{M,1}$ $D_{M,2}$ $\ldots$ $D_{M,|T_M|}$
输出需满足以下条件:
- $1 \le C_i \le M\ (1 \le i \le M)$
- $1 \le |T_i| \le 8\ (1 \le i \le M)$
- $1 \le D_{i,j} \le M\ (1 \le i \le M,\ 1 \le j \le |T_i|)$
- 不存在 $j \ne k$ 使得 $D_{i,j} = D_{i,k}$
- 将第 $i$ 条边和所有颜色不属于 $T_i$ 的边从图中删除后,$u_i$ 和 $v_i$ 仍然连通。$(1 \le i \le M)$
- $C_i$ 以及 $D_{i,j}$ 均为整数。
只要满足上述条件,输出均视为正确。
**特别地,$T_i$ 可以包含未在满足(※)的迂回路径中使用的颜色。**
说明/提示
### 约束条件
- $3 \le N \le 5555$
- $3 \le M \le \min(N(N-1)/2, 9999)$
- $1 \le u_i < v_i \le N$
- 对于 $1 \le i < j \le N$,有 $(u_i, v_i) \ne (u_j, v_j)$
- 输入的图是连通的。
- 对于任意一条边 $i\ (1 \le i \le M)$,都存在一条不经过边 $i$ 的、连接 $u_i$ 和 $v_i$ 的路径。
### 部分分
- 对于 $N \le 111$ 且 $M \le 222$ 的数据集,答对可得 $10$ 分。
- 对于无额外约束的数据集,答对可得 $390$ 分。
### 样例解释 1
对于边 $1$ 的迂回路径,可以使用边 $2$ 到边 $10$,这些边所用的颜色为 $2$ 到 $10$,共 $9$ 种,不满足题目条件(※)。但也存在一条迂回路径仅使用边 $2$、$3$、$11$,这些边所用的颜色为 $2$、$3$、$5$,共 $3$ 种,满足题目条件(※)。
由 ChatGPT 4.1 翻译