并查集

我们将a的敌人定义为a+n,b的敌人的定义为b+n,所以a与b+n是一类人,b与a+n是一类人,然后就这么合并就好了

代码

//By AcerMo
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int M=2050;
int n,m;
int siz[M],fa[M];
inline int read()
{int x=0;char ch=getchar();while (ch>'9'||ch<'0') ch=getchar();while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x;
}
inline int find(int x)
{if (x!=fa[x]) return fa[x]=find(fa[x]);return x;
}
inline void constt()
{for (int i=1;i<=n*2;i++) fa[i]=i,siz[i]=1;return ;
}
signed main()
{n=read();m=read();constt();while (m--){char ch[3];scanf("%s",ch);int x=read(),y=read();int r1=find(x),r2=find(y);if (ch[0]=='E'){int r3=find(x+n);int r4=find(y+n);fa[r3]=r2;fa[r4]=r1;}else fa[r1]=r2;}int cnt=0;for (int i=1;i<=n;i++) if (find(i)==i) cnt++;cout<<cnt;return 0;
}

BZOJ1370洛谷P1892 [BOI2003]团伙相关推荐

  1. 洛谷 P1892 [BOI2003]团伙(并查集变种 反集)

    [BOI2003]团伙 题目描述 现在有 n n n 个人,他们之间有两种关系:朋友和敌人.我们知道: 一个人的朋友的朋友是朋友 一个人的敌人的敌人是朋友 现在要对这些人进行组团.两个人在一个团体内当 ...

  2. 洛谷P1892 [BOI2003]团伙

    链接:P1892 题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两 ...

  3. 精讲并查集经典习题:P1892 [BOI2003]团伙(超详细)

    一,需要开o2才能AC的代码 用emys[i]存储第i个人的敌人数,vector<long long>emyr[i]存储i个人的所以敌人,fa[i]存储第i个人的大boss. 1.初始化  ...

  4. 并查集——团伙(洛谷 P1892)

    题目选自洛谷P1892 最基础的并查集是给出关系直接合并,这道题呢稍微多了一些条件,就是敌人的敌人也是自己的朋友,所以在合并的时候多了几步操作. 首先,要充分理解题目. "敌人的敌人就是朋友 ...

  5. P1892 [BOI2003]团伙(反集)

    P1892 [BOI2003]团伙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 现在有 nn 个人,他们之间有两种关系:朋友和敌人.我们知道: 一个人的朋友的朋友是朋友 ...

  6. 洛谷P4322 最佳团伙(树上dp)

    题目描述 洛谷传送门 题目描述 JSOI 信息学代表队一共有 N 名候选人,这些候选人从 1 到 N 编号.方便起见,JYY 的编号是 0 号.每个候选人都由一位编号比他小的候选人Ri推荐.如果 Ri ...

  7. [luogu p1892] [BOI2003]团伙

    传送门 [BOI2003]团伙 题目描述 给定 \(n\) 个人,他们之间有两个种关系,朋友与敌对.可以肯定的是: 与我的朋友是朋友的人是我的朋友 与我敌对的人有敌对关系的人是我的朋友 现在这 \(n ...

  8. 洛谷P1892.团伙

    传送门 题目描述 给定 n个人,他们之间有两个种关系,朋友与敌对.可以肯定的是: 与我的朋友是朋友的人是我的朋友 与我敌对的人有敌对关系的人是我的朋友 现在这 n个人进行组团,两个人在一个团队内当且仅 ...

  9. P1892 [BOI2003]团伙(并查集,反集)难度⭐⭐★

    题目链接 反集 如果a和b是敌人,合并n+b和a,n+a和b 如果c和a是敌人,合并n+c和a,n+a和c 那么b和c自然就合并在一起了 这样就符合了题目敌人的敌人是朋友的规则 注意 并查集不要忘了初 ...

最新文章

  1. 机器学习算法集锦:从贝叶斯到深度学习及各自优缺点
  2. 2017 年 VR 将走的 3 个方向 你更认可哪一个?
  3. memcpy,_tcscpy_s的使用
  4. 20应用统计考研复试要点(part29)--论述题及面试题
  5. 如何把一个网页生成一个快捷方式在桌面?_如何打造一个简洁、高效的桌面?
  6. Airflow 中文文档:时区
  7. 关于Aspose对于Word操作的一些扩展及思考
  8. fiddler弱网测试_用fiddler实现弱网测试
  9. 摄影测量学——空间后方交会
  10. php单例模式的实现方式,PHP之单例模式的实现
  11. linux 进程 cpu 100,清理linux中占用CPU 100%的病毒
  12. C++编程 Unicode转换成中文
  13. 金山词霸2006专业版(300M)的无法屏幕取词问题的解决方法!
  14. java加入md5_javamd5加密解密
  15. adventureworks mysql_AdventureWorks2012
  16. 光纤上网是如何实现的?—Vecloud微云
  17. CTF-bacon(培根密码)
  18. 使用MD5加密的登陆demo
  19. 哈代:数学家一生是少年
  20. Vue 添加组件和跳转

热门文章

  1. 转:Markdown个性化主题设置
  2. 利用arduino UNO配合Orangepi 4B实现制作机器人
  3. 电动车智能头盔(自行车智能头盔)方案
  4. 计算机毕业设计Android家庭理财系统手机软件app(源码+系统+mysql数据库+Lw文档)
  5. 信号脉宽、脉冲宽度(持续更新中)
  6. 51单片机内部定时器/计数器实验
  7. 【Tools】dnw烧录配置
  8. 神经网络训练多少次合适,深度神经网络如何训练
  9. oracle连接中on (1=1)
  10. 安卓开发使用mupdf实现pdf文件的预览