小 L 计划进行 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏。
小 L 的赛车有三辆,分别用大写字母 、、 表示。地图一共有四种,分别用小写字母 、、、 表示。
其中,赛车 不适合在地图 上使用,赛车 不适合在地图 上使用,赛车 不适合在地图 上使用,而地图 则适合所有赛车参加。适合所有赛车参加的地图并不多见,最多只会有 张。
场游戏的地图可以用一个小写字母组成的字符串描述。
小 L 对游戏有一些特殊的要求,这些要求可以用四元组 来描述,表示若在第 场使用型号为 的车子,则第 场游戏要使用型号为 的车子。
你能帮小 L 选择每场游戏使用的赛车吗?如果有多种方案,输出任意一种方案。如果无解,输出 。
Constraints
, ,
Solution
据题意显然需要为 2-SAT 。因为 的地图适合三种赛车,且最多只有 张,所以我们可以通过枚举每张 的地图为 或 来将问题转化为 2-SAT 的裸题。
对于一条限制,点 代表第 场选择了赛车 ,点 代表不选择赛车 ,点 与点 同理。具体连边方式为:若第 场无法使用 ,直接跳过;若第 场无法使用 ,则连边 到 ,代表一旦选择 则无解;否则连边 到 , 到 。
建完图以后 tarjan 缩点,判断是否有可行方案。输出方案时输出强连通分量编号较小的一个即可。
时间复杂度 。
Code
1 |
|