题目链接

反集

如果ab是敌人,合并n+ban+ab
如果ca是敌人,合并n+can+ac
那么bc自然就合并在一起了
这样就符合了题目敌人的敌人是朋友的规则

注意

并查集不要忘了初始化

注意

输入的时候scanf要用%s 因为scanf遇见空格是不会跳的,所以尽量这种时候就不要用scanf,比较麻烦,cin它不香嘛

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+7;
const ll mod=2147483647;
ll n,m;
ll f[N];
inline void init()//并查集必须要初始化!
{for(int i=1;i<=(n<<1|1);++i)f[i]=i;
}
inline ll finds(ll x)
{return f[x]==x?x:f[x]=finds(f[x]);
}
inline void add(ll x,ll y)
{x=finds(x);y=finds(y);f[x]=y;
}
inline bool check(ll x,ll y)
{x=finds(x);y=finds(y);return x==y;
}
int main()
{scanf("%lld %lld",&n,&m);init();for(int i=1;i<=m;++i){ll a,b;char ch[2];scanf("%s%lld%lld",&ch,&a,&b);//注意这一点要用%s 因为scanf遇见空格是不会跳的,所以尽量这种时候就不要用scanf,比较麻烦,cin它不香嘛//cin>>ch>>a>>b;if(ch[0]=='F')add(a,b);else {add(a+n,b);//反集add(b+n,a);//敌人的敌人就是我的朋友}}ll ans=0;for(int i=1;i<=n;++i)//查祖先数if(f[i]==i)ans++;printf("%lld\n",ans);return 0;
}

注:如果您通过本文,有(qi)用(guai)的知识增加了,请您点个赞再离开,如果不嫌弃的话,点个关注再走吧 ! 当然,也非常欢迎您能在讨论区指出此文的不足处,作者会及时对文章加以修正 !如果有任何问题,欢迎评论,非常乐意为您解答!( •̀ ω •́ )✧

P1892 [BOI2003]团伙(并查集,反集)难度⭐⭐★相关推荐

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

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

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

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

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

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

  4. P1892 [BOI2003]团伙 +食物链 POJ - 1182 (并查集+思维)

    思路①: 开数组enem[i]记录节点i的敌对节点,当再次输入i的敌对节点时就把他所在并查集的根节点和enem[i]并起来. #include<bits/stdc++.h> using n ...

  5. 洛谷P1892 [BOI2003]团伙

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

  6. [luogu p1892] [BOI2003]团伙

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

  7. BZOJ1370洛谷P1892 [BOI2003]团伙

    并查集 我们将a的敌人定义为a+n,b的敌人的定义为b+n,所以a与b+n是一类人,b与a+n是一类人,然后就这么合并就好了 代码 //By AcerMo #include<cmath> ...

  8. [BOI2003]团伙

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

  9. 什么是集群,集群的概念介绍

    集群术语须知 服务硬件:指提供计算服务的硬件,比如 PC 机.PC 服务器. 服务实体:服务实体通常指服务软体和服务硬体. 节点(node):运行 Heartbeat 进程的一个独立主机称为节点,节点 ...

最新文章

  1. COM:下一代微生物组技术在作物生产中的应用——局限性以及基于知识的解决方案的需求
  2. 最近...(2019-03-18~2019-04-03)
  3. AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结
  4. LeetCode 443 String Compression(双指针)
  5. 13.小结Action
  6. 跳转到页面后加载一个请求的方法
  7. 项目实施双机热备备忘
  8. python loadtxt_Python 数据科学入门2:Matplotlib
  9. 没看过这5本硬核技术书,就别说你懂大数据
  10. 【Nginx那些事】nginx配置实例(一)反向代理
  11. 机器学习笔记(三)---- 逻辑回归(二分类)
  12. 【Java】Java StreamCorruptedException: invalid stream header: EFBFBDEF
  13. 计算机操作基本知识公务员,公务员计算机类操作系统知识.pdf
  14. 【SCIR笔记】ACL20 让模型“事半功倍”,探究少样本序列标注方法
  15. uniapp/vue 组件之间的传值
  16. python socket connect 阻塞_python – 如何获得非阻塞socket connect()?
  17. 医院耗材管理系统开发_13
  18. Fedora系统配置中文输入法
  19. Word中参考文献导入Endnote
  20. STM32野火教程学习

热门文章

  1. 第七篇:并发-恢复机制
  2. HI3519V101支持的sensor
  3. HTTP协议和工作原理
  4. 转: linux下的自动对时
  5. 角色权限(Role)和系统权限(System)的几个澄清实验
  6. Android 导入项目时出现错误的解决方法(红色感叹号)
  7. 多人开源博客系统再搜集
  8. Hi35xx GPIO在ko中设置
  9. icop java,java基于spring注解AOP的异常处理的方法
  10. 前端电脑和浏览器分辨率不同_不同岗位的程序员如何选电脑 :)