LeetCode-强盗团伙
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-强盗团伙相关推荐
- 每日一题 强盗团伙
强盗团伙 1920 年的芝加哥,出现了一群强盗. 如果两个强盗遇上了,那么他们要么是朋友,要么是敌人. 而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一 ...
- acwing 784. 强盗团伙
题面: 1920年的芝加哥,出现了一群强盗. 如果两个强盗遇上了,那么他们要么是朋友,要么是敌人. 而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙 ...
- 强盗团伙(啊哈-并查集[模板])
题目 快过年了,犯罪分子们也开始为年终奖"奋斗"了,小哼的家乡出现了多次抢劫事件.由于强盗人数过于庞大,作案频繁,警方想查清楚到底有几个犯罪团伙实在是太不容易了,不过警察叔叔还是搜 ...
- 【并查集】团伙(luogu 1892)
团伙 luogu 1892 代码: 定义对手的对手是朋友,朋友的朋友是朋友,现在有n个人和m组关系,如果两个人是朋友那么他们属于同一个团伙,问有多少个团伙 原题: 题目描述 1920年的芝加哥,出现了 ...
- [codevs2597]团伙并查集
题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...
- 并查集之团伙(codevs)
2597 团伙 时间限制: 1 s 空间限制: 128000 KB 题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我 ...
- 2597 团伙(并查集就是好用!)
2597 团伙 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么 ...
- luogu P1892 团伙
P1892 团伙 题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两 ...
- 多变量线性优化_使用线性上下文强盗进行多变量Web优化
多变量线性优化 Expedia Group Technology -数据 (EXPEDIA GROUP TECHNOLOGY - DATA) Or how you can run full webpa ...
最新文章
- Python3--有道音频下载
- Java书籍Top 10
- 自然语言处理期末复习(6)话题模型
- Lesson 1#03-Python安装与Hello Python World
- 有python基础先学c还是c+-初学者学python好还是c
- java中or和and的优先级_x86处理器汇编语言AND和OR运算符优先级
- 阿里云与中国联通首个公共云平台上线
- YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】
- rabbitmq-路由模式-routingkey
- idea 切换git仓库_Idea切换git分支及合并
- python基本代码教程-Python入门教程丨1300多行代码,让你轻松掌握基础知识点
- 十个最佳方法保护Windows文件服务器
- Java虚拟机类加载机制浅谈
- JAVA强制删除文件file
- 光盘在服务器上装系统,如何通过DELL引导光盘在戴尔11G服务器上安装Win2003操作系统?.docx...
- 传统企业如何精准获客?搭上这趟高科技顺风车
- dart和python哪个好学_2018最坑爹的编程语言排行出炉,这些你碰都不要碰!
- 荣耀play4t手机怎么样 荣耀play4tpro手机怎么样
- python提取cad中的文字_[python]提取PPT中的文字(包括图片中的文字)
- 政府大数据的资源库建设