#P12095. [NERC2024] DAG Serialization
[NERC2024] DAG Serialization
Description
考虑一个简单的单比特布尔寄存器,它支持两个操作:
- —— 如果寄存器是 ,则将其设置为 ,并返回 ;否则,返回 ;
- —— 如果寄存器是 ,则将其设置为 ,并返回 ;否则,返回 。
寄存器的初始状态为 。假设有 个操作 (),并且 至多有两个操作返回 true。同时,我们给出了操作的部分顺序,表示为一个有向无环图(DAG):边 表示 在 之前发生。你的任务是判断是否可能将这些操作排列成某个线性顺序,使得符合给定的部分顺序,并且如果按照该顺序执行操作,得到的结果与给定的一致。
Input Format
第一行,给定一个整数 —— 操作的数量()。接下来的 行,每行给出一个操作,格式为 ,其中 是 set 或 unset, 是 true 或 false。保证最多有两个操作的结果为 true。
接下来的一个整数 ,表示有向无环图中的边数()。接下来的 行,每行给出一对整数 和 (,),表示边 ,即操作 在操作 之前发生。
Output Format
如果存在一个线性顺序,满足有向无环图约束,并且能够使得操作的结果与给定的相符,输出任何一个满足条件的线性顺序。如果不存在这样的顺序,输出 。
5
set true
unset true
set false
unset false
unset false
2
1 4
5 2
5 1 3 2 4
3
unset true
unset false
set true
0
2 3 1
2
unset false
set true
1
2 1
-1
2
unset false
set false
0
-1
京公网安备 11011102002149号