[Poi2001]和平委员会 理解

Posted brucew

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Poi2001]和平委员会 理解相关的知识,希望对你有一定的参考价值。

题目链接:https://loj.ac/problem/10097

首先分别在互相厌恶的代表之间连一条边(无向边)。

然后依次枚举每一个党派,若该党派的两名代表都没有参加委员会,则将该党派的一位代表加入委员会。(用 bool 变量 e[i] 来表示第 i 位代表是否加入委员会)

在将该代表加入委员会时,要对它的所有连边进行一遍dfs,若出现矛盾状况(一个党派的两个代表都在委员会内),则试着加入另一个代表,再检查是否有矛盾,若无矛盾,则对下一个党派进行处理,若有矛盾,则直接输出“ NIE ”。(因为一个党派在委员会内必须有且仅有一个代表)

需要注意的是,我们需要给 e 数组设置一个备份,一边在出现上述的矛盾情况时将 e 数组(即委员会的组成代表)返回到先前的状态,并重新选择代表。

总的来说,就是将每个党派枚举一遍,列出选择此代表时的情况,再判断是否出现矛盾。

以上是关于[Poi2001]和平委员会 理解的主要内容,如果未能解决你的问题,请参考以下文章

[POI2001]和平委员会

[POI2001]和平委员会

HIT 1917 2—SAT

和平委员会

[Poi2000]病毒

Poi2000病毒