#P15713. 绕行边染色
绕行边染色
时间限制:2 秒
空间限制:512 MiB
题目描述
给定一张无向简单连通图,包含 个顶点和 条边。顶点编号为 到 ,边编号为 到 。第 条边连接顶点 和 。
这张图满足一个特殊性质:对于每条边 ,即使不使用这条边,也存在一条从 到 的路径。这样的路径称为第 条边的 绕行路径。同一条边可能有多条绕行路径。
你需要给每条边染一种颜色。颜色编号为 到 。每条边恰好染一种颜色;有些颜色可以不用,有些颜色也可以被多条边使用。
一种边染色被称为有趣的,当且仅当满足以下条件:
- 若两条边有公共端点,则它们的颜色不同;
- 对于每条边,都存在一条特殊绕行路径:这条绕行路径上所有边的颜色种类数不超过 。
你需要构造一种有趣染色,并且对于每条边,输出一个可用于构造其特殊绕行路径的颜色集合。
可以证明,在题目约束下至少存在一种有趣染色。
输入格式
第一行包含两个整数 。
接下来 行,第 行包含两个整数 ,表示第 条边。
保证每一对顶点至多出现一条边,图连通,并且删除任意一条边后,该边两端点之间仍存在绕行路径。
输出格式
第一行输出 个整数。第 个整数 表示第 条边的颜色,要求
接下来输出 行。第 行描述第 条边的特殊绕行路径可使用的颜色集合。
该行先输出一个整数 ,满足
然后输出 个两两不同、范围在 到 之间的颜色编号。
对于第 条边,必须存在一条从 到 的绕行路径,并且这条路径不使用集合之外的颜色。集合不要求最小;实际路径可以只用到集合中的一部分颜色。
数据范围
- ;
- ;
- ;
- 图为简单连通图;
- 删除任意一条边后,其两个端点之间仍存在路径。
样例 1
输入
10 11
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
1 10
1 4
输出
1 2 3 4 5 6 7 8 9 10 5
3 2 3 5
3 1 3 5
3 1 2 5
6 5 6 7 8 9 10
7 4 5 6 7 8 9 10
6 4 5 7 8 9 10
6 4 5 6 8 9 10
6 4 5 6 7 9 10
6 4 5 6 7 8 10
8 4 5 6 7 8 9 1 2
3 1 2 3
样例说明
对于样例中的第一条边,有两条绕行路径。较长的一条包含 种颜色(从 到 ),因此不是特殊绕行路径;较短的一条由第 、第 和第 条边组成,颜色为 ,因此是特殊绕行路径。