前方是2-SAT蒟蒻版(大雾)
蒟蒻不会打代码啊QAQ,代码有参考
配合洛谷食用风味更佳
2-SAT, 就是2-Satisfiability。 Satisfiability,可满足性。
背景故事
我要请大家开party!– O b l i a Oblia Oblia
O b l i a Oblia Oblia这样想。
因为 O b l i a Oblia Oblia是萌妹子同时是OIer和MOer,所以她可以同时邀请到OI和MO的神犇们。又因为所有已经接受 O b l i a Oblia Oblia邀请的OIer和MOer数量总共 2 n 2n 2n个,但party会场最多只能来 n n n个人,所以她已经先在考虑之后给大家编号并且构建了 n n n个集合,每个集合里面只有两个人,她准备在每个集合中挑选一个人参加party。公平起见,她采用了随机数的方式。
O b l i a Oblia Oblia已经生成了一个序列。正在她准备发出邀请函之前,学姐 L e D e v i a LeDevia LeDevia告诉她,这些人之间是有矛盾的!
热心的 L e D e v i a LeDevia LeDevia为 O b l i a Oblia Oblia给出了 m m m组的矛盾关系 ( a , b ) (a,b) (a,b),也就是说, a a a和 b b b是不可以同时参加Party的~~(否则就会搞事情)~~
于是爱好和平的 O b l i a Oblia Oblia就来找了 T y n n Tynn Tynn解决问题。
拒绝别人是不好的。说不定还可以暗箱操作一下
思路
T y n n Tynn Tynn是以神奇方法和龟速出名的dalao。
他是这样想的:
我们假设 x x x所在的集合里面的另外一个元素是 x ′ x' x′
因为每一个集合都要选一个人,而对于每一组矛盾关系, ( a , b ) (a,b) (a,b)不能同时选择。所以,如果选择了 a a a,那就必须要选择 b ′ b ' b′,
上面那个命题的逆命题是:如果选择了 b ′ b' b′,就必须选择 a a a
那么,该命题的逆否命题就是,不选择 b ′ b' b′,就不可以选择 a a a
由于逆否命题恒成立,所以不选择 b ′ b' b′,就不可以选择 a a a一定是对的
因为每个集合必须选一个,所以不选 b ′ b' b′就要选 b b b,不选 a a a就必须选 a ′ a' a′.
所以,选择了 b b b就必须选择 a ′ a' a′
(对吧 o)
这个“必须”的关系是可以传递的吧……
dalao就是dalao, T y n n Tynn Tynn马上想到了图论。
每一条“必须”都构边,就变成了有向图。
于是我们发现,这一个图有很强的对称性。
“tarjan陪伴强联通分量
----《膜你抄》
T y n n Tynn Tynn开始哼歌,于是就发现了这一句歌词
强连通分量!!
开始强连通分量缩点。
对于一个强连通分量中的所有元素,只要选择了一个,就必须选择剩下的所有元素。
T y n n Tynn Tynn试了几次,发现 T a r j a n Tarjan Tarja