CF2087I.Hamiltonian Partition
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个有 n 个顶点和 m 条边的有向无环图。该图不包含环或重边。
你需要将该图的所有边划分为若干个哈密顿环(即每个环恰好经过图中的每一个顶点一次),使得每条边恰好属于一个环。显然,原图无法满足这一要求,因此你需要在划分之前,向图中添加最少数量的边,使得这样的划分成为可能。
添加边后,图中可以出现环和重边,但不能有自环。
输入格式
第一行包含两个整数 n 和 m(2≤n≤100;1≤m≤2n(n−1))。
接下来的 m 行,每行包含两个整数 xi 和 yi(1≤xi,yi≤n;xi=yi),表示一条从顶点 xi 指向顶点 yi 的有向边。
输入保证给定的图没有环和重边。
输出格式
第一行输出一个整数 k(1≤k≤n⋅m),表示你添加的边数。
接下来 k 行,每行两个整数 xi 和 yi(1≤xi,yi≤n;xi=yi),表示你添加的一条边的起点和终点。
然后输出一行,包含一个整数 c(1≤c≤m),表示你将所有边划分成的哈密顿环的数量。
最后一行输出 m+k 个整数 a1,a2,…,am+k(1≤ai≤c),其中 ai 表示第 i 条边(原图的边编号为 1 到 m,新添加的边编号为 m+1 到 m+k)被分配到的哈密顿环编号。
如果存在多种添加边数最少的方案,输出任意一种均可。
输入输出样例
输入#1
3 2 1 2 2 3
输出#1
1 3 1 1 1 1 1
输入#2
5 4 1 2 3 2 3 4 5 4
输出#2
6 2 3 4 5 5 1 1 5 2 1 4 3 2 1 2 1 2 1 1 1 2 2 2
输入#3
4 6 1 2 2 4 4 3 1 3 2 3 1 4
输出#3
6 3 1 4 2 3 1 3 2 2 4 4 1 3 1 1 1 3 2 2 1 2 2 3 3 3
说明/提示
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?