#aBC360A. [ABC360A] A Healthy Breakfast
[ABC360A] A Healthy Breakfast
题目描述
有一个包含 个顶点和 条边的简单无向图。顶点编号为 到 ,边编号为 到 。第 条边连接顶点 和顶点 。
每个顶点上都有一盏灯,初始时所有灯都是关闭的。
你可以进行以下操作 次到至多 次:
- 选择一条边。假设这条边的两个端点是 和 ,则将顶点 和顶点 上的灯的状态反转(即如果灯亮则关闭,如果灯灭则打开)。
请判断是否可以通过上述操作,使得最终恰好有 盏灯是亮着的。
如果可能,请输出一种可行的操作方案。
输入格式
输入从标准输入读取,格式如下:
输出格式
如果无法使恰好 盏灯亮起,则输出一行 No。
如果可能,则首先输出一行 Yes。接下来输出操作方案,格式如下:
这里, 表示操作次数, 表示第 次操作选择的边的编号。需要满足:
如果存在多种可行的操作方案,输出其中任意一种即可。
样例 #1
输入:
5 5 4
1 2
1 3
2 4
3 5
1 5
输出:
Yes
3
3 4 5
样例 #2
输入:
5 5 5
1 2
1 3
2 4
3 5
1 5
输出:
No
样例 #3
输入:
10 10 6
2 5
2 6
3 5
3 8
4 6
4 8
5 9
6 7
6 10
7 9
输出:
Yes
3
10 9 6
说明/提示
限制条件
- $0 \leq M \leq \min\left(2 \times 10^5, \frac{N(N-1)}{2}\right)$
- 输入保证图是简单图(无自环、无重边)。
- 所有输入值均为整数。
样例解释 #1
按照输出样例的操作顺序,各顶点的灯状态变化如下:
- 选择第 条边(连接顶点 和 )。顶点 和 上的灯被点亮。
- 选择第 条边(连接顶点 和 )。顶点 和 上的灯被点亮。
- 选择第 条边(连接顶点 和 )。顶点 上的灯被点亮,顶点 上的灯被关闭(因为之前是亮的)。
所有操作结束后,顶点 上的灯是亮的,共 盏,满足 的条件。
其他满足条件的方案还包括:操作次数 ,边的选择顺序为 等(同一条边可以选择多次)。