黑社会团伙(并查集)
题目描述
众所周知,香港的黑社会组织猖獗,警方希望能摸清他们的内部构成情况,特派小生前往调查。经过长期的卧底,小生初步获得了一些资料:整个组织有n个人,任何两个认识的人不是朋友就是敌人,而且满足:①我朋友的朋友是我的朋友;②我敌人的敌人是我的朋友。所有是朋友的人组成一个团伙。现在,警方委派你协助调查,拥有关于这n个人的m条信息(即某两个人是朋友,或某两个人是敌人),请你计算出这个城市最多可能有多少个团伙。
数据范围:2≤N≤2000,1≤M≤5000。
输入
输出
包含一个整数,即可能的最大团伙数。
样例输入
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;
}
黑社会团伙(并查集)相关推荐
- BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]
题意: 朋友的朋友是朋友,敌人的敌人是朋友:朋友形成团伙,求最多有多少团伙 种类并查集WA了一节课,原因是,只有那两种关系才成立,诸如朋友的敌人是朋友之类的都不成立! 所以拆点做吧 #include ...
- 【bzoj1370】[Baltic2003]Gang团伙 并查集
题目描述 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: 1. 我朋友的朋友是我的朋友: 2. 我敌人的敌人是我的朋友: 所有是朋友的人组成一个团伙.告诉你关于这n个人的m条信息, ...
- [codevs2597]团伙并查集
题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...
- 团伙 并查集_BZOJ 1370 Baltic2003 Gang团伙 并查集
题目大意:给定n个人,朋友的朋友是朋友,敌人的敌人是朋友,朋友之间组成一个团伙,求团伙数 将每个点x拆成两个:x和x+n 如果x和y是朋友,就将x和y合并 如果x和y是敌人,就将x和y+n合并,将y和 ...
- 【洛谷1892】团伙 并查集
题意 题面说的很清楚 同noip2010关押罪犯 传送门:http://blog.csdn.net/dadatu_zhao/article/details/78806584 #include<i ...
- 漫画:什么是 “并查集” ?
作者 | 封承成 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 导语:并查集是一种精巧的算法,本身并不难理解,却很常用,在许多场景下都能找到并查集的身影. 本文作者封承成,年仅1 ...
- 什么是 “并查集” ?
导语:并查集是一种精巧的算法,本身并不难理解,却很常用,在许多场景下都能找到并查集的身影. 本文作者封承成,年仅12岁,非常感谢他的投稿. 并查集是什么 并查集,是一种判断"远房亲戚&quo ...
- 【并查集】团伙(luogu 1892)
团伙 luogu 1892 代码: 定义对手的对手是朋友,朋友的朋友是朋友,现在有n个人和m组关系,如果两个人是朋友那么他们属于同一个团伙,问有多少个团伙 原题: 题目描述 1920年的芝加哥,出现了 ...
- 精讲并查集经典习题:P1892 [BOI2003]团伙(超详细)
一,需要开o2才能AC的代码 用emys[i]存储第i个人的敌人数,vector<long long>emyr[i]存储i个人的所以敌人,fa[i]存储第i个人的大boss. 1.初始化 ...
- 洛谷 P1892 [BOI2003]团伙(并查集变种 反集)
[BOI2003]团伙 题目描述 现在有 n n n 个人,他们之间有两种关系:朋友和敌人.我们知道: 一个人的朋友的朋友是朋友 一个人的敌人的敌人是朋友 现在要对这些人进行组团.两个人在一个团体内当 ...
最新文章
- 小R SLAM机器人基本命令
- 拼接符 防注入正则校验_SpringBoot 开发秘籍 启动时配置校验
- 【Android】java.lang.AssertionError use looper thread, must call Looper.prepare() first!异常分析
- Error loading MySQLdb module: No module named MySQLdb
- [云炬小程序实战笔记] 第1章 全新版:初识微信小程序
- 【nginx运维基础(4)】Nginx的日志管理(日志格式与定时分割日志)
- 【BZOJ 4555】 4555: [Tjoi2016Heoi2016]求和 (NTT)
- windows如何生成ssh密钥
- 字节跳动 计算机视觉方向算法实习生 招聘!
- OO第一单元总结——多项式求导
- oracle 百分位数,oracle分析函数 percent_rank, percentile_cont, percentile_disc
- ZInt支持中文例子
- html中怎么设置背景图片固定,css如何实现固定的背景图像
- 罗永浩:一个极端个人理想主义的创业者
- 计算机计算资产分析表,财务指标计算器.xls
- ubuntu 16.04 单用户____修改忘记密码
- 分享网页微信防撤回插件
- 日行一小步,坚持一大步
- java代理模式总结
- linux 上下文切换时对用户task和内核task区别对待——针对fpu