nd
3
4
5
6
end Source
Japan 2002 Kanazawa
题意:
给出p1+p2个人,其中p1个是好人,p2个是坏人。好人只说真话,坏人只说假话,有一些关系 ,a说b是好人(坏人).其中没有矛盾的,判断是否有唯一解判断哪些人是好人,哪些人是坏人。
思路来源于:cxlove博客
思路:
a说b是好人,那么a、b是同种人的,a说b是坏人,那么a、b不是同种人,用并查集维护每个有关系的集合,集合存和root关系相同的有多少人、不同的有多少人,然后dp。
dp[i][j] 前i个集合有j个好人的种数。
用一个数组纪录路径,不过要输出方案貌似还要一点处理,我是通过建图处理的,代码写的好长,衰~
代码:
#include
#include
#include
#include
#include
#include
#include