#P14225. [2026队测系列]星港远征计划之CNOT 派对

    ID: 13434 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>CF2200图论强连通分量构造拓扑排序贪心搜索

[2026队测系列]星港远征计划之CNOT 派对

题目背景

星港远征计划中,工程师们正在调试一组量子控制节点。系统状态由两个长度为 NN 的二进制串表示:当前状态 AA 和目标状态 BB
你拥有 MM 种控制指令。第 ii 种指令会检查第 xix_i 个节点:只有当该位置当前为 1 时,才能触发对第 yiy_i 个节点的翻转。某些指令甚至可能既检查自己又翻转自己。
你需要判断,是否能在不超过 2N2N 次操作内把系统从状态 AA 调整到状态 BB;如果可以,还要构造出一组可行操作序列。

题目描述

给定两个长度为 NN 的二进制字符串

A=A1A2AN,B=B1B2BNA=A_1A_2\ldots A_N,\qquad B=B_1B_2\ldots B_N。

你可以执行 MM 种操作。第 ii 种操作由一对整数 (xi,yi)(x_i,y_i) 表示,其含义是:

  • 当且仅当当前 Axi=1A_{x_i}=1 时,翻转 AyiA_{y_i} 的值。

这里“翻转”指的是把 0 变成 1,或把 1 变成 0
允许出现 xi=yix_i=y_i 的情况。

请判断,是否存在一种方案,能够在对 AA 执行不超过 2N2N 次操作后,使其变成 BB。如果存在,请构造其中任意一种。

共有 TT 组测试数据,你需要分别求解。

输入格式

输入从标准输入给出,格式如下:

T
case1
case2
...
caseT

每组测试数据的格式为:

N
A
B
M
x1 y1
x2 y2
...
xM yM

输出格式

按顺序输出 TT 组测试数据的答案。

对于每组测试数据:

  • 如果不存在满足条件的操作序列,输出一行 -1
  • 否则,设操作序列长度为 KK,第 ii 步执行的操作编号为 CiC_i,输出:
K
C1 C2 ... CK

其中需要满足:

  • K2NK \le 2N
  • 任何一次执行操作 ii 时,都必须满足当时的 Axi=1A_{x_i}=1

样例 #1

输入

3
4
0100
1010
4
1 2
2 1
2 3
4 3
2
10
01
1
1 2
2
01
00
3
1 1
1 2
2 1

输出

3
2 3 1
-1
3
3 2 1

说明

对于第 11 组测试数据,可以按如下方式操作:

  • 初始时,A=0100A=0100
  • 执行操作 22,得到 A=1100A=1100
  • 执行操作 33,得到 A=1110A=1110
  • 执行操作 11,得到 A=1010A=1010

对于第 22 组测试数据,无论怎样操作,都无法把 A1A_1 变成 0

注意:和第 33 组测试数据一样,允许出现 xi=yix_i=y_i 的情况。

数据范围

  • 1T2×1051 \le T \le 2 \times 10^5
  • 1N2×1051 \le N \le 2 \times 10^5
  • 1M2×1051 \le M \le 2 \times 10^5
  • A,BA,B 是长度为 NN 的二进制字符串
  • ABA \ne B
  • 1xiN1 \le x_i \le N
  • 1yiN1 \le y_i \le N
  • 所有测试数据中 NNMM 的总和不超过 2×1052 \times 10^5
  • T,N,M,xi,yiT,N,M,x_i,y_i 均为整数