题目名称 | 1657. [POI 2004]逻辑门 |
---|---|
输入输出 | poi2004_bra.in/out |
难度等级 | ★★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 17 |
题目来源 | cstdio 于2014-06-10加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:1, 提交:1, 通过率:100% | ||||
cstdio | 100 | 0.186 s | 0.59 MiB | C++ |
关于 逻辑门 的近10条评论(全部评论) | ||||
---|---|---|---|---|
这个做法好好玩……有点像预流推进,先设极端状态再慢慢改
|
让我们考虑一个有n个门的电路。这些门从0到n-1编号。每个门有着确定数目的输入和一个输出。所有这些输入输出的值都是0,1或1/2.每个输入都来自某个门的一个输出,这两者的值相等。每个输出可以和不止一个输入相连。编号为0,1的门是特殊的——它们没有输入,并且输出值总是等于其编号:0号门总是输出0,1号门总是输出1.我们说门的输出状态(简称为门的状态)是合法的,如果满足以下条件:
·a) 输出值等于0并且这个门的输入中0多于1.
·b) 输出值等于1/2并且这个门的输入中0与1数目相同。
·c) 输出值等于1并且这个门的输入中1多于0.
·d) 这个门是特殊的,即其编号为0或1,并且其输出值等于编号。
当所有门的状态都合法时,我们称这个电路是合法的。我们说一个门的状态是固定的,如果这个门的输出状态在所有有效电路中都一样。
你需要读入电路的描述,并且对每个门,计算出它的状态是否固定,如果固定,这个状态是多少。
输入文件的第一行是门的数量n,2<=n<=10000.
第2行到第n-1行描述了门的连接状态。第i行包含i号门的输入。这一行开头有一个整数k_i表示输入个数(k_i>=1),接下来有k_i个整数,描述了i号门的输入来自哪些门的输出。其中k_i>=1。这些数都用空格隔开。所有门的输入数之和不超过200000.
输出n行,依次描述从0号门到n-1号门的固定情况。
根据i-1号门的状态,第i行应当输出:
·0——如果i号门的状态固定为0,
·1/2——如果i号门的状态固定为1/2,
·1——如果i号门的状态固定为1,
·?(问号)——如果不确定
5
2 0 1
2 4 2
2 2 4
0
1
1/2
?
?
样例如下图: