1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。

而且有一点是肯定的,就是:我朋友的朋友是我的朋友;

我敌人的敌人也是我的朋友。两个强盗是同一团伙的条件是当且仅当他们是朋友。

现在给你一些关于强盗们的信息,问你最多有多少个强盗团伙。

输入格式

第一行包含整数 NN,表示强盗的个数(从 11 编号到 NN)。

第二行包含整数 MM,表示关于强盗的信息条数。

接下来 MM 行,每行可能是 F p q 或是 E p q,FF 表示 pp 和 qq 是朋友,EE 表示 pp 和 qq 是敌人。

输入数据保证不会产生信息的矛盾。

输出格式

输出只有一行,表示最大可能的团伙数。

数据范围

2≤N≤10002≤N≤1000,
1≤M≤50001≤M≤5000,
1≤p,q≤N1≤p,q≤N

输入样例

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

输出样例

3

关键思路:利用反集

若1和2是敌人,则1+n和2是朋友,2+n和1是朋友;

若3和1是敌人,则1+n和3是朋友,3+n和1是朋友;

则2和3是朋友。

#include <iostream>
using namespace std;const int N=2500;
int dp[N];// int Find(int v){
//     if(dp[v]==v) return v;
//     return dp[v]=Find(dp[v]);
// }int Find(int v){int val=v;while(dp[v]!=v) v=dp[v];while(val!=v){int next=dp[val];dp[val]=v;val=next;}return v;
}void Union(int v1,int v2){int m=Find(v1),n=Find(v2);if(m!=n) dp[m]=n;
}
int main(int argc,char* argv[]){int n,m;cin>>n>>m;cin.ignore();for(int i=1;i<=2*n;++i) dp[i]=i;char re;int k1,k2;for(int i=1;i<=m;++i){cin>>re>>k1>>k2;//scanf("%c %d %d\n",&re,&k1,&k2);if(re=='F') Union(k1,k2);else if(re=='E'){Union(k1+n,k2);Union(k2+n,k1);}}int res=0;for(int i=1;i<=n;++i){if(dp[i]==i) res++;}cout<<res<<endl;return 0;
}

LeetCode-强盗团伙相关推荐

  1. 每日一题 强盗团伙

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

  2. acwing 784. 强盗团伙

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

  3. 强盗团伙(啊哈-并查集[模板])

    题目 快过年了,犯罪分子们也开始为年终奖"奋斗"了,小哼的家乡出现了多次抢劫事件.由于强盗人数过于庞大,作案频繁,警方想查清楚到底有几个犯罪团伙实在是太不容易了,不过警察叔叔还是搜 ...

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

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

  5. [codevs2597]团伙并查集

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

  6. 并查集之团伙(codevs)

    2597 团伙  时间限制: 1 s  空间限制: 128000 KB 题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我 ...

  7. 2597 团伙(并查集就是好用!)

    2597 团伙 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么 ...

  8. luogu P1892 团伙

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

  9. 多变量线性优化_使用线性上下文强盗进行多变量Web优化

    多变量线性优化 Expedia Group Technology -数据 (EXPEDIA GROUP TECHNOLOGY - DATA) Or how you can run full webpa ...

最新文章

  1. Python3--有道音频下载
  2. Java书籍Top 10
  3. 自然语言处理期末复习(6)话题模型
  4. Lesson 1#03-Python安装与Hello Python World
  5. 有python基础先学c还是c+-初学者学python好还是c
  6. java中or和and的优先级_x86处理器汇编语言AND和OR运算符优先级
  7. 阿里云与中国联通首个公共云平台上线
  8. YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】
  9. rabbitmq-路由模式-routingkey
  10. idea 切换git仓库_Idea切换git分支及合并
  11. python基本代码教程-Python入门教程丨1300多行代码,让你轻松掌握基础知识点
  12. 十个最佳方法保护Windows文件服务器
  13. Java虚拟机类加载机制浅谈
  14. JAVA强制删除文件file
  15. 光盘在服务器上装系统,如何通过DELL引导光盘在戴尔11G服务器上安装Win2003操作系统?.docx...
  16. 传统企业如何精准获客?搭上这趟高科技顺风车
  17. dart和python哪个好学_2018最坑爹的编程语言排行出炉,这些你碰都不要碰!
  18. 荣耀play4t手机怎么样 荣耀play4tpro手机怎么样
  19. python提取cad中的文字_[python]提取PPT中的文字(包括图片中的文字)
  20. 政府大数据的资源库建设

热门文章

  1. python微信搭建_python搭建微信公众平台
  2. What is OpenOCD?
  3. 胡立阳:卖出股票10大信号
  4. 国惠光电红外相机二次开发中常见问题
  5. Django学习第一周和第二周(pycharm专业版)
  6. Java实现 蓝桥杯 算法提高 字符串压缩
  7. 第四章、连上 Internet
  8. 【已解决】【V1.1版本】如何彻底关闭Win10的自动更新并且随时可以恢复?
  9. vb.net使用图片资源和图片编辑器的方法
  10. 路哥从不低头 dfs