AT_arc215_e [ARC215E] CNOT Party

题目描述

给定两个长度为 $N$ 的二进制字符串 $A = A_1 A_2 \ldots A_N$ 和 $B = B_1 B_2 \ldots B_N$。 你可以进行 $M$ 种不同类型的操作。第 $i$ 种操作由一对整数 $(x_i, y_i)$ 表示,$1 \le x_i, y_i \le N$。当 $A_{x_i} = 1$ 时,该操作会将 $A_{y_i}$ 的值翻转($0$ 变为 $1$,$1$ 变为 $0$)。允许 $x_i = y_i$。这里“翻转”是指将 $0$ 变为 $1$,将 $1$ 变为 $0$。 请判断是否有办法最多通过 $2N$ 次上述操作,将 $A$ 变为与 $B$ 完全相同的字符串。如果可以,请构造出一种可行方案。 共有 $T$ 组测试数据,请分别解决每一组。

输入格式

输入由标准输入给出,格式如下: > $T$ $\text{case}_1$ $\text{case}_2$ $\vdots$ $\text{case}_T$ 每组测试数据格式如下: > $N$ $A$ $B$ $M$ $x_1$ $y_1$ $x_2$ $y_2$ $\vdots$ $x_M$ $y_M$

输出格式

按顺序输出 $T$ 组测试数据的答案。 对于每组测试,如果不存在符合要求的操作序列,输出一行 `-1`。 如果存在一种可行操作方式,假设总共进行了 $K$ 次操作,分别选择了第 $C_1, C_2, \ldots, C_K$ 种操作,则输出: > $K$ $C_1$ $C_2$ $\ldots$ $C_K$ 其中 $K$ 不超过 $2N$,且在进行第 $i$ 次操作时,不能使 $A_{x_i}=0$。

说明/提示

### 样例解释 1 对于第一组测试,操作如下: - 初始 $A = 0100$。 - 执行第 $2$ 次操作,$A = 1100$。 - 执行第 $3$ 次操作,$A = 1110$。 - 执行第 $1$ 次操作,$A = 1010$。 对于第二组测试,无论如何操作,也无法使 $A_1$ 变为 $0$。 注意,如第三组测试所示,允许 $x_i = y_i$。 ### 约束条件 - $1 \le T \le 2\times 10^5$ - $1 \le N \le 2\times 10^5$ - $1 \le M \le 2\times 10^5$ - $A$ 与 $B$ 均为长度为 $N$ 的二进制串。 - $A \neq B$ - $1 \le x_i \le N$ ($1 \le i \le M$) - $1 \le y_i \le N$ ($1 \le i \le M$) - 所有测试数据中 $N$ 与 $M$ 之和不超过 $2 \times 10^5$。 - $T, N, M, x_i, y_i$ 均为整数。 由 ChatGPT 5 翻译