题目大意:维护 N 个人和 M 个关系,对每个人来说符合:我朋友的朋友也是我的朋友,我敌人的敌人也是我的朋友,求最多有多少个朋友构成的联通块. 题目大意:维护关系显然要用到并查集,这里是维护了两种关系,即:朋友和敌人,应该有两种做法,首先是维护带权并查集,可用 0 表示两人为朋友,1 表示两人为敌人,不过这样做似乎对于求有多少个朋友构成的联通块并不容易,因为只要两个人有关系(无论什么关系)都在一个联通块中:另一种做法就是扩展域并查集,将一个点拆成两个点,分别表示自己朋友的集合和自己敌人的集合,这…
https://www.lydsy.com/JudgeOnline/problem.php?id=3673 https://www.lydsy.com/JudgeOnline/problem.php?id=3674 https://www.luogu.org/problemnew/show/P3402 这里最强的应该是BZOJ3674,于是接下来讲的内容和代码与BZOJ3674相同而非另外两道题,但核心思维完全一致. n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次…