题目大意:有n个人,关系为:朋友的朋友是朋友,敌人的敌人是朋友。如果是朋友就在一个团队内,是敌人就不在,现在给出一关系,问最多有多少团伙。
题解:并查集,建反集,如果是朋友,就把他们的并查集合并;如果是敌人,就把他们分别和对方的反集合并,统计最后有几个联通块

C++ Code:

#include<cstdio>
using namespace std;
const int maxn=1010<<1;
int n,m,ans;
int f[maxn];
char ch[10];
int find(int x){return x==f[x]?x:(f[x]=find(f[x]));}
void merge(int x,int y) {int xx=find(x),yy=find(y);f[xx]=yy;}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)f[i]=i,f[i+n]=i+n;
for (int i=0;i<m;i++){
int a,b;
scanf("%s%d%d",ch,&a,&b);
if (ch[0]=='F'){
int x=find(a),y=find(b);
if (x!=y)f[x]=f[y];
}else if (ch[0]=='E'){
int x=find(a),y=find(b),z=find(a+n),w=find(b+n);
if (x!=w)f[w]=f[x];
if (y!=z)f[z]=f[y];
}
}
for (int i=1;i<=n;i++)ans+=(f[i]==i);
printf("%d\n",ans);
return 0;
}

最新文章

  1. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用
  2. LUA5.3的BNF范式学习笔记
  3. Ajax - ASP.NET MVC 4 系列
  4. Codeforces Round #333 (Div. 1) D. Acyclic Organic Compounds trie树合并
  5. 【转载】Android通过ksoap2调用.net(c#)的webservice
  6. linux-制作linux启动U盘
  7. Agile.Net 组件式开发平台 - 权限管理组件
  8. Firefox Security Toolkit 安装
  9. 《深入理解linux内核架构》第二章 进程管理和调度
  10. Raw qcow qcow2 vhd-vpc虚拟磁盘格式间相互转换
  11. java数组复制的方式和效率比较
  12. kinect for windows - 环境搭建
  13. VS Code开发调试ASP.NET Core 1.0
  14. 只有有lua编译能力不足200K代码吧?NO! Python 有可能。
  15. MQTT 设计原则
  16. my views--软件工程、python
  17. react源码总览(翻译)
  18. 第二部分之Redis服务器(第十四章)
  19. python批量修改linux主机密码
  20. BZOJ 3192: [JLOI2013]删除物品(树状数组)

热门文章

  1. Hadoop(22)-Hadoop数据压缩
  2. 网络基础,tpc,udp
  3. ctf题目writeup(6)
  4. (数据科学学习手札30)朴素贝叶斯分类器的原理详解&amp;Python与R实现
  5. EF报错&ldquo;EntityValidationErrors&rdquo;
  6. 常用js方法合集
  7. EntityFramewrok 使用
  8. 实现一个简单版的express
  9. CTS测试笔记
  10. QC的使用学习(一)