AT_kupc2020_k Deleting Edges

题目描述

有一个简单无向二分图,包含 $N_1 + N_2$ 个顶点和 $M$ 条边。 图中的顶点从 $1$ 编号到 $N_1 + N_2$,边从 $1$ 编号到 $M$。 第 $i$ 条边连接了顶点 $a_i$ 和顶点 $b_i$。 其中,$a_i$ 满足 $1 \le a_i \le N_1$,$b_i$ 满足 $N_1 + 1 \le b_i \le N_1 + N_2$。 在所有 $M$ 条边初始存在时,顶点 $i$ 的度数记为 $C_i$。 你的任务是尽可能多地执行以下操作。

输入格式

输入通过标准输入给出,格式如下: > $N_1$ $N_2$ $M$ $a_1$ $b_1$ $a_2$ $b_2$ $\cdots$ $a_M$ $b_M$

输出格式

输出可以执行的最大操作次数和一个操作序列。具体内容包括: - 第一行输出最大操作次数 $K$。 - 接下来的 $K$ 行中,每行输出一个操作中选择的边的编号 $x_i$。 如果能达到最大操作次数的序列有多种,输出其中任意一种即可。 格式如下: > $K$ $x_1$ $x_2$ $\ldots$ $x_K$

说明/提示

### 操作规则 - 当前顶点 $i$ 的度数为 $D_i$。 - 选择一条尚未删除的边进行删除。 - 选定的边编号为 $x$ 时,必须满足: - $D_{a_x}$ 除以 $2$ 的余数与 $C_{b_x}$ 除以 $2$ 的余数不同。 - $D_{b_x}$ 除以 $2$ 的余数与 $C_{a_x}$ 除以 $2$ 的余数不同。 计算可以执行的最大操作次数,并给出一种达到最大数量的操作序列。 ### 约束条件 - $1 \le N_1 \le 3000$ - $1 \le N_2 \le 3000$ - $1 \le M \le \min(3000, N_1 \times N_2)$ - $1 \le a_i \le N_1\ (1 \le i \le M)$ - $N_1 + 1 \le b_i \le N_1 + N_2\ (1 \le i \le M)$ - 对于 $1 \le i < j \le M$,$(a_i, b_i) \neq (a_j, b_j)$ ### 样例解释 1 在初始状态下,顶点度数为 $C_1 = 3, C_2 = 2, C_3 = 1, C_4 = 2, C_5 = 2$,现时 $D_1 = 3, D_2 = 2, D_3 = 1, D_4 = 2, D_5 = 2$。可以删除的边有: - 连接顶点 $1$ 和顶点 $3$ 的边 $1$ - 连接顶点 $2$ 和顶点 $4$ 的边 $4$ - 连接顶点 $2$ 和顶点 $5$ 的边 $5$ 选择删除边 $1$,则 $D_1 = 2, D_2 = 2, D_3 = 0, D_4 = 2, D_5 = 2$,此时可删除: - 连接顶点 $2$ 和顶点 $4$ 的边 $4$ - 连接顶点 $2$ 和顶点 $5$ 的边 $5$ 选择删除边 $4$ 后,$D_1 = 2, D_2 = 1, D_3 = 0, D_4 = 1, D_5 = 2$。接下来可以删除的只有: - 连接顶点 $1$ 和顶点 $4$ 的边 $2$ 删除边 $2$ 后,即无可删除的边,度数为 $D_1 = 1, D_2 = 1, D_3 = 0, D_4 = 0, D_5 = 2$。该示例中执行了 $3$ 次操作,且无法超过这个次数,因此答案是 $3$。 ### 样例解释 2 没有满足条件的边可以选择删除。 **本翻译由 AI 自动生成**