P6378 [PA2010] Riddle(2-sat/前后缀优化建图)

P6378 [PA2010] Riddle

n个点m条边的无向图,分为k个部分,从每个部分选择恰好一个关键点,使得每条边至少有一个端点是关键点。

首先有这么多的限制,实际上就是一个选或者不选的问题,每条边的限制相当于一个不选就必须选另一个,每个部分的限制就是一旦选择某一个就不能选其他的,所以可以很好地用2-sat来表示。

现在还有一个问题就是如何满足恰好一个关键点,如何避免不选的情况,但是发现如果不选说明这部分点之间没有连边,否则就必须选了,那么我们就可以任选一个点作为关键点,不影响答案。

然后考虑部分限制的图怎么建,本质上就是向除了自己的其他所有非点连边,那么这是一个常见的前后缀优化建图的套路,优化之后图的联通性没有发生变化。

posted @ 2021-03-02 22:04  dinlon  阅读(115)  评论(0)    收藏  举报