#P1435. Gates

    ID: 436 远端评测题 5000ms 64MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>动态规划图结构Central Europe 2001

Gates

本题没有可用的提交语言。

描述

在当代超大规模集成电路(VLSI)芯片行业中,电气工程师使用的软件工具会执行许多优化操作。你的任务是实现芯片设计中的一种特定优化。你的工具会接收一个由与非门(NAND gate,其输出值为输入值的否定合取,即当且仅当两个输入值均为11时,输出值为00)构成的无环网络。该网络是已合成组件的一部分,无法更改。网络的所有输入都连接到一个信号xx。目标是将某些输入与xx断开,并将常量信号00和/或11分配给这些输入,同时确保设计实现的功能保持不变。

我们称对网络输入的xx00和/或11的分配为最优,如果连接到xx的输入数量尽可能少,但网络计算的功能仍与所有输入都连接到xx时相同。

示例
观察以下设计。

我们可以将其更改为仅有一个变量输入的设计,例如:

(注意,还存在其他方式将输入连接到仅一个xx和某些0011,同时实现相同的功能)。

任务
编写一个程序,对每个数据集:
读取网络的描述,
计算对网络输入的xx00和/或11的最优分配,
输出结果。

输入

输入的第一行包含一个正整数dd,表示数据集的数量,1d201 \leq d \leq 20。接下来是数据集。

每个数据集由两行组成。第一行包含两个正整数nnmm,用单个空格分隔,1n1000001 \leq n \leq 1000001m2000001 \leq m \leq 200000。整数nn是网络的输入数量,mm是网络中门的数量。

第二行包含2m2m个非零整数,用单个空格分隔。第2j12j - 1和第2j2j位置的数字描述了门jj的输入信号源。正数ss表示门ss的输出,负数ss表示网络的第(s)(-s)个输入。门和网络输入的编号从11开始。每个门的输入连接到网络的输入或之前描述的门输出。每个网络输入至少连接到一个门输入。每个门输出至少连接到一个门输入,除了最后一个门的输出连接到网络的输出。

输出

输出应包含dd行,每行对应一个数据集。第ii行应包含第ii个数据集的答案。

对一个数据集的答案应包含一个长度为kk的字符序列,以换行符结束(中间无空格)。每个字符应为00(数字“零”)、11(数字“一”)或xx(小写字母“x”)。序列的第ii个符号表示对第ii个网络输入的分配。

如果存在多个最优分配,则程序可以输出其中任意一个(但仅输出一个)。

输入数据 1

1
3 6
-1 -3 -1 -2 1 2 1 2 4 3 5 5

输出数据 1

10x

来源

中欧 2001