题目描述

众所周知,香港的黑社会组织猖獗,警方希望能摸清他们的内部构成情况,特派小生前往调查。经过长期的卧底,小生初步获得了一些资料:整个组织有n个人,任何两个认识的人不是朋友就是敌人,而且满足:①我朋友的朋友是我的朋友;②我敌人的敌人是我的朋友。所有是朋友的人组成一个团伙。现在,警方委派你协助调查,拥有关于这n个人的m条信息(即某两个人是朋友,或某两个人是敌人),请你计算出这个城市最多可能有多少个团伙。

数据范围:2≤N≤2000,1≤M≤5000。

输入

第一行包含一个整数N,第二行包含一个整数M,接下来M行描述M条信息,内容为以下两者之一:“F x y”表示x与y是朋友;“E x y”表示x与y是敌人(1≤x≤y≤N)。

输出

包含一个整数,即可能的最大团伙数。

样例输入

6
4
E 1 4
F 3 5
F 4 6
E 1 2

样例输出

3
#include<bits/stdc++.h>
using namespace std;int fa[2005],di[2005];
int n,m,s,x,y,r1,r2;
char z;int getfa(int x){if(fa[x]==x){return x;}else{return fa[x]=getfa(fa[x]);}
}int main(){cin>>n>>m;for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=m;i++){cin>>z>>x>>y;if(z=='F'){r1=getfa(x);r2=getfa(y);fa[r2]=r1;}else if(z=='E'){if(di[x]!=0){r1=getfa(y);r2=getfa(di[x]);fa[r2]=r1;}else{di[x]=y;}if(di[y]!=0){r1=getfa(x);r2=getfa(di[y]);fa[r2]=r1;}else{di[y]=x;}}}for(int i=1;i<=n;i++){if(fa[i]==i){s++;}}cout<<s;
}

黑社会团伙(并查集)相关推荐

  1. BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]

    题意: 朋友的朋友是朋友,敌人的敌人是朋友:朋友形成团伙,求最多有多少团伙 种类并查集WA了一节课,原因是,只有那两种关系才成立,诸如朋友的敌人是朋友之类的都不成立! 所以拆点做吧 #include ...

  2. 【bzoj1370】[Baltic2003]Gang团伙 并查集

    题目描述 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: 1. 我朋友的朋友是我的朋友: 2. 我敌人的敌人是我的朋友: 所有是朋友的人组成一个团伙.告诉你关于这n个人的m条信息, ...

  3. [codevs2597]团伙并查集

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

  4. 团伙 并查集_BZOJ 1370 Baltic2003 Gang团伙 并查集

    题目大意:给定n个人,朋友的朋友是朋友,敌人的敌人是朋友,朋友之间组成一个团伙,求团伙数 将每个点x拆成两个:x和x+n 如果x和y是朋友,就将x和y合并 如果x和y是敌人,就将x和y+n合并,将y和 ...

  5. 【洛谷1892】团伙 并查集

    题意 题面说的很清楚 同noip2010关押罪犯 传送门:http://blog.csdn.net/dadatu_zhao/article/details/78806584 #include<i ...

  6. 漫画:什么是 “并查集” ?

    作者 | 封承成 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 导语:并查集是一种精巧的算法,本身并不难理解,却很常用,在许多场景下都能找到并查集的身影. 本文作者封承成,年仅1 ...

  7. 什么是 “并查集” ?

    导语:并查集是一种精巧的算法,本身并不难理解,却很常用,在许多场景下都能找到并查集的身影. 本文作者封承成,年仅12岁,非常感谢他的投稿. 并查集是什么 并查集,是一种判断"远房亲戚&quo ...

  8. 【并查集】团伙(luogu 1892)

    团伙 luogu 1892 代码: 定义对手的对手是朋友,朋友的朋友是朋友,现在有n个人和m组关系,如果两个人是朋友那么他们属于同一个团伙,问有多少个团伙 原题: 题目描述 1920年的芝加哥,出现了 ...

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

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

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

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

最新文章

  1. 小R SLAM机器人基本命令
  2. 拼接符 防注入正则校验_SpringBoot 开发秘籍 启动时配置校验
  3. 【Android】java.lang.AssertionError use looper thread, must call Looper.prepare() first!异常分析
  4. Error loading MySQLdb module: No module named MySQLdb
  5. [云炬小程序实战笔记] 第1章 全新版:初识微信小程序
  6. 【nginx运维基础(4)】Nginx的日志管理(日志格式与定时分割日志)
  7. 【BZOJ 4555】 4555: [Tjoi2016Heoi2016]求和 (NTT)
  8. windows如何生成ssh密钥
  9. 字节跳动 计算机视觉方向算法实习生 招聘!
  10. OO第一单元总结——多项式求导
  11. oracle 百分位数,oracle分析函数 percent_rank, percentile_cont, percentile_disc
  12. ZInt支持中文例子
  13. html中怎么设置背景图片固定,css如何实现固定的背景图像
  14. 罗永浩:一个极端个人理想主义的创业者
  15. 计算机计算资产分析表,财务指标计算器.xls
  16. ubuntu 16.04 单用户____修改忘记密码
  17. 分享网页微信防撤回插件
  18. 日行一小步,坚持一大步
  19. java代理模式总结
  20. linux 上下文切换时对用户task和内核task区别对待——针对fpu

热门文章

  1. java循环语句的四要素如何设置_JAVA 基础4-语句与方法
  2. 《android进阶之光》——事件总线(下)
  3. java计算机毕业设计网上租房管理源代码+数据库+系统+lw文档
  4. 电气控制基本原理3--三台电机顺序启动与停止
  5. Java判断文件是否存在
  6. python画人物_用python画一朵玫瑰给你
  7. pandas的get_dummies
  8. 供应链管理的核心是什么?
  9. FireFox搜索增强插件
  10. 基于Solidworks的三维光路结构示意图绘制实例演示-技术细节