#aBC360A. [ABC360A] A Healthy Breakfast

[ABC360A] A Healthy Breakfast

题目描述

有一个包含 NN 个顶点和 MM 条边的简单无向图。顶点编号为 11NN,边编号为 11MM。第 ii 条边连接顶点 uiu_i 和顶点 viv_i

每个顶点上都有一盏灯,初始时所有灯都是关闭的。

你可以进行以下操作 00 次到至多 MM 次:

  • 选择一条边。假设这条边的两个端点是 uuvv,则将顶点 uu 和顶点 vv 上的灯的状态反转(即如果灯亮则关闭,如果灯灭则打开)。

请判断是否可以通过上述操作,使得最终恰好有 KK 盏灯是亮着的。

如果可能,请输出一种可行的操作方案。

输入格式

输入从标准输入读取,格式如下:

NN MM KK
u1u_1 v1v_1
u2u_2 v2v_2
\vdots
uMu_M vMv_M

输出格式

如果无法使恰好 KK 盏灯亮起,则输出一行 No

如果可能,则首先输出一行 Yes。接下来输出操作方案,格式如下:

XX
e1e_1 e2e_2 \dots eXe_X

这里,XX 表示操作次数,eie_i 表示第 ii 次操作选择的边的编号。需要满足:

  • 0XM0 \leq X \leq M
  • 1eiM1 \leq e_i \leq M

如果存在多种可行的操作方案,输出其中任意一种即可。

样例 #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

说明/提示

限制条件

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • $0 \leq M \leq \min\left(2 \times 10^5, \frac{N(N-1)}{2}\right)$
  • 0KN0 \leq K \leq N
  • 1ui<viN1 \leq u_i < v_i \leq N
  • 输入保证图是简单图(无自环、无重边)。
  • 所有输入值均为整数。

样例解释 #1

按照输出样例的操作顺序,各顶点的灯状态变化如下:

  • 选择第 33 条边(连接顶点 2244)。顶点 2244 上的灯被点亮。
  • 选择第 44 条边(连接顶点 3355)。顶点 3355 上的灯被点亮。
  • 选择第 55 条边(连接顶点 1155)。顶点 11 上的灯被点亮,顶点 55 上的灯被关闭(因为之前是亮的)。

所有操作结束后,顶点 1,2,3,41,2,3,4 上的灯是亮的,共 44 盏,满足 K=4K=4 的条件。

其他满足条件的方案还包括:操作次数 X=4X=4,边的选择顺序为 (3,4,3,1)(3,4,3,1) 等(同一条边可以选择多次)。