码迷,mamicode.com
首页 > 其他好文 > 详细

[Poi2001]和平委员会 理解

时间:2019-07-02 20:59:52      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:矛盾   表之间   委员会   输出   判断   返回   出现   枚举   状态   

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

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

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

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

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

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

[Poi2001]和平委员会 理解

标签:矛盾   表之间   委员会   输出   判断   返回   出现   枚举   状态   

原文地址:https://www.cnblogs.com/BruceW/p/11122868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!