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