AT_abc345_f [ABC345F] Many Lamps
题目描述
有一个 $N$ 个顶点 $M$ 条边的简单图,顶点编号为 $1$ 到 $N$,边编号为 $1$ 到 $M$。第 $i$ 条边连接顶点 $u_i$ 和顶点 $v_i$。
每个顶点上都有一个灯,初始时所有灯都是关闭的。
你可以进行如下操作 $0$ 次或至多 $M$ 次:
- 选择一条边。设该边的两个端点为 $u$ 和 $v$。将 $u$ 和 $v$ 上的灯的状态反转(如果灯是亮的就关掉,如果是关的就打开)。
请判断是否可以通过上述操作,使得恰好有 $K$ 个灯是亮着的。
如果可以,请输出一种可行的操作方案。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $M$ $K$
> $u_1$ $v_1$
> $u_2$ $v_2$
> $\vdots$
> $u_M$ $v_M$
输出格式
如果无法使恰好 $K$ 个灯亮着,输出 `No`。
如果可以,先输出 `Yes`,然后输出操作方案,格式如下:
> $X$ $e_1$ $e_2$ $\dots$ $e_X$
其中,$X$ 表示操作次数,$e_i$ 表示第 $i$ 次操作选择的边的编号。要求满足:
- $0 \leq X \leq M$
- $1 \leq e_i \leq M$
如果存在多种满足条件的操作方案,输出任意一种均可。
说明/提示
### 限制条件
- $1 \leq N \leq 2 \times 10^5$
- $0 \leq M \leq \min\left(2 \times 10^5, \frac{N(N-1)}{2}\right)$
- $0 \leq K \leq N$
- $1 \leq u_i < v_i \leq N$
- 输入保证图是简单图
- 所有输入值均为整数
### 样例解释 1
按照输出样例的操作顺序,状态如下:
- 选择第 $3$ 条边。点 $2$ 和点 $4$ 上的灯被点亮。
- 选择第 $4$ 条边。点 $3$ 和点 $5$ 上的灯被点亮。
- 选择第 $5$ 条边。点 $1$ 上的灯被点亮,点 $5$ 上的灯被关闭。
所有操作结束后,点 $1,2,3,4$ 上的灯是亮的,因此该操作方案满足条件。
其他满足条件的方案还包括 $X=4,\ (e_1,e_2,e_3,e_4)=(3,4,3,1)$ 等(同一条边可以选择多次)。
由 ChatGPT 4.1 翻译