# 作物解锁条件 - 参考时间限制:0.5 秒(参考环境:R30;仅供预估) - 实际时间限制:标准程序在目标评测环境中处理最慢正式测试文件的基准时间乘以 2,再按 0.5 秒向上取整。 - 内存限制:128 MB ## 背景故事 一款农业游戏扩展提供基础作物与衍生作物。衍生作物的配方可能依赖其他配方,甚至形成环。你要找出从现有基础作物出发,最终真正能够获得哪些作物。 ## 形式化问题描述 共有 $N+M$ 种作物,编号 $1,\ldots,N+M$ .最初仅前 $N$ 种已获得。后 $M$ 种各有一个条件表达式,包含作物编号、逻辑与 `&&` 、逻辑或 `||` 和圆括号。 编号的值表示对应作物是否已经获得。逻辑与的优先级高于逻辑或,同级运算从左到右;括号优先。允许在记号之间出现空格或制表符;一个整数或一个双字符运算符内部没有空白,整数没有前导零。 重复应用以下规则:若某种未获得作物的条件为真,就获得它。已经获得的作物永远保留。直到再也没有新作物能够获得。只由未获得作物互相依赖形成的环不会自行解锁;条件中的重复编号按普通逻辑运算解释。请判断每种衍生作物最终能否获得。 ## 输入格式 第一行两个整数 $N,M$ .随后恰好 $M$ 行,第 $i$ 行是编号 $N+i$ 的条件表达式。每个表达式至少包含一个编号,且语法合法。 ## 输出格式 输出 $M$ 行。第 $i$ 行在作物 $N+i$ 最终可获得时输出 `1` ,否则输出 `0` .若 $M=0$ 则不输出任何行。 ## 样例 1 ### 输入 ```text 1 5 3 || 1 2 && 2 5 4 2 || 4 && 5 ``` ### 输出 ```text 1 1 0 0 1 ``` ### 解释 作物二由基础作物一解锁,随后解锁三和六;四和五互相等待。 ![箭头展示一条实际解锁过程及四、五之间未启动的环;结点下方数字表示最终可用状态。图中未画出全部条件引用。](assets/example.svg) 箭头展示一条实际解锁过程及四、五之间未启动的环;结点下方数字表示最终可用状态。图中未画出全部条件引用。 ## 样例 2 ### 输入 ```text 0 2 2 1 ``` ### 输出 ```text 0 0 ``` ### 解释 没有基础作物,二者的依赖环不能自行解锁。 ## 样例 3 ### 输入 ```text 2 2 1||3&&2 3&&3 ``` ### 输出 ```text 1 1 ``` ### 解释 与优先于或,因此作物三的条件为 $1\lor(3\land2)$ ,基础作物一足以解锁它,随后也能获得四。 ## 数据范围与保证 $N,M\ge0$ ,$1\le N+M\le2\times10^5$ .所有表达式长度之和 $S\le10^6$ ,长度包含空格和制表符,不包含行尾换行。表达式中的编号都在 $[1,N+M]$ 中。 数据规格由 Codex(GPT-6)补齐:确定逐行表达式格式、输入规模、最初仅基础作物可用的递推语义、空集合边界与测试分组。 ### 数据分组 | 分值比例 | 额外条件 | | --- | --- | | 20% | $N+M\le20,\ S\le1000$ | | 30% | $N+M\le1000,\ S\le10000$ | | 50% | 无额外条件 | [参考评测环境与测量](../../../docs/评测环境与性能.md)