QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 512 MB Points totaux : 100

#8921. 交互式转换

Statistiques

因诺波利斯校园由 $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 条通道组成的特定配置,但这是不可能的。

在第三个用例中,有一个建筑需要开启照明。这可以通过一次操作完成。

在第四个用例中,有一个建筑需要关闭照明。一种可能的操作序列是执行一次关闭该建筑照明的操作。即使照明灯已经处于关闭状态,这也是一个合法的操作。

在第五个用例中,有两个建筑和一条通道,所有照明灯都应处于关闭状态。空操作序列是一个合法的序列,可以直接达到该配置。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.