因诺波利斯校园由 $n$ 个建筑和 $m$ 条通道组成。每条通道连接两个不同的建筑,且任意两个建筑之间至多只有一条通道。
已知每个建筑都有一个照明灯,可以处于开启或关闭状态。初始时,所有建筑的照明灯均处于关闭状态。调度员可以通过一次操作开启或关闭任意建筑的照明灯。调度员也可以在照明灯已开启时按下开启按钮,或在照明灯已关闭时按下关闭按钮,这些操作不会改变建筑照明灯的状态。
类似地,每条通道也有一个照明灯,可以处于开启或关闭状态。初始时,所有通道的照明灯均处于关闭状态。然而,与建筑照明灯不同,通道照明灯的状态会自动改变:如果调度员进行某次操作后,通道所连接的两个建筑的照明灯状态相同,则该通道的照明灯也会变为该状态;否则,其状态保持不变。
换句话说,如果调度员操作后,通道连接的两个建筑的照明灯均处于关闭状态,则通道照明灯也会关闭。如果两个建筑的照明灯均处于开启状态,则通道照明灯也会开启。如果其中一个建筑的照明灯开启而另一个关闭,则通道照明灯的状态保持不变。
在信息学奥林匹克竞赛参赛者到达之前,校园主管已为每个建筑和每条通道确定了其应有的照明状态。
请检查调度员是否可以通过执行任意次数的操作来实现主管的要求。如果可能,请找出任意一种这样的操作序列。能够正确判断是否可以达到目标状态,但未给出具体操作序列的解法将获得部分分数。
输入格式
每个测试点包含一个或多个测试用例。第一行包含一个整数 $t$ —— 测试用例的数量 ($1 \le t \le 50\,000$)。接下来是各测试用例的描述。每个测试用例描述如下:
第一行包含两个整数:$n$ —— 建筑数量,以及 $m$ —— 通道数量 ($1 \le n \le 10^5, 0 \le m \le 2 \cdot 10^5$)。
接下来的 $m$ 行包含通道的描述。 第 $i$ 行包含整数 $a_i, b_i, c_i$ —— 第 $i$ 条通道连接的建筑编号,以及第 $i$ 条通道的目标照明状态 ($1 \le a_i, b_i \le n, a_i \neq b_i, 0 \le c_i \le 1$)。如果 $c_i = 0$,则第 $i$ 条通道的照明灯最终应处于关闭状态;如果 $c_i = 1$,则应处于开启状态。
最后一行包含 $n$ 个整数 $d_1, d_2, \dots, d_n$ —— 建筑的目标照明状态 ($0 \le d_i \le 1$)。如果 $d_v = 0$,则建筑 $v$ 的照明灯最终应处于关闭状态;如果 $d_v = 1$,则应处于开启状态。
所有测试用例中 $n$ 的总和不超过 $10^5$。所有测试用例中 $m$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例:
- 如果不存在能达到建筑和通道目标照明状态的操作序列,输出“NO”。
- 如果存在操作序列,输出“YES”。如果您不想提供具体的操作序列,请在下一行输出 $1$,然后继续处理下一个测试用例。如果您想提供操作序列,请在下一行输出一个整数 $s$ —— 操作次数 ($0 \le s \le 10^6$,所有测试用例中 $s$ 的总和不得超过 $10^6$),并在接下来的 $s$ 行中输出操作本身。
第 $i$ 行 ($1 \le i \le s$) 输出两个整数:$v_i$ —— 改变照明状态的建筑编号,以及 $x_i$ —— 新的照明状态 ($1 \le v_i \le n, 0 \le x_i \le 1$,若 $x_i = 0$ 则建筑 $v_i$ 的照明灯关闭,若 $x_i = 1$ 则建筑 $v_i$ 的照明灯开启)。
样例
输入 1
5 4 4 1 2 0 2 3 1 3 4 0 2 4 1 0 1 0 0 4 4 1 2 0 2 3 1 3 4 0 4 1 1 0 1 0 1 1 0 1 1 0 0 2 1 1 2 0 0 0
输出 1
YES 5 4 1 3 1 2 1 3 0 4 0 NO YES 1 1 1 YES 1 1 0 YES 0
说明
样例中包含五个测试用例。
在第一个用例中,有 4 个建筑(圆圈表示)和 4 条通道(连线表示)。建筑或通道的照明状态由粗线表示。可以在 5 次操作内达到目标照明状态。下图展示了初始状态以及每次操作后的状态。
在第二个用例中,需要达到由 4 个建筑和 4 条通道组成的特定配置,但这是不可能的。
在第三个用例中,有一个建筑需要开启照明。这可以通过一次操作完成。
在第四个用例中,有一个建筑需要关闭照明。一种可能的操作序列是执行一次关闭该建筑照明的操作。即使照明灯已经处于关闭状态,这也是一个合法的操作。
在第五个用例中,有两个建筑和一条通道,所有照明灯都应处于关闭状态。空操作序列是一个合法的序列,可以直接达到该配置。