题意:

朋友的朋友是朋友,敌人的敌人是朋友;朋友形成团伙,求最多有多少团伙


种类并查集WA了一节课,原因是,只有那两种关系才成立,诸如朋友的敌人是朋友之类的都不成立!

所以拆点做吧

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=1005;
typedef long long ll;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}int n, m, fa[N], val[N], x, y, cc[N][2]; char s[5];
inline int find(int x) {if(x == fa[x]) return x;int root = find(fa[x]);val[x] ^= val[fa[x]];return fa[x] = root;
}
inline void Union(int x, int y, int p) { int f1 = find(x), f2 = find(y);if(f1 != f2) {fa[f1] = f2;val[f1] = val[x]^val[y]^p;} else {if( (val[x]^val[y]) != p) while(1);}
}int main() {freopen("in","r",stdin);n=read(); m=read();for(int i=1; i<=n; i++) fa[i]=i;for(int i=1; i<=m; i++) {scanf("%s",s); x=read(), y=read();Union(x, y, s[0] == 'F' ? 0 : 1);}int ans=0;for(int i=1; i<=n; i++) cc[find(i)][val[i]] = 1;for(int i=1; i<=n; i++) ans += cc[i][0] + cc[i][1];printf("%d",ans);
}

种类并查集

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=2005;
typedef long long ll;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}int n, m, fa[N], x, y, a[N], ans; char s[5];
inline int find(int x) {return x==fa[x] ? x : fa[x]=find(fa[x]);}
inline void Union(int x, int y) {x = find(x), y = find(y);if(x != y) fa[x] = y;
}int main() {freopen("in","r",stdin);n=read(); m=read();for(int i=1; i<=n*2; i++) fa[i]=i;for(int i=1; i<=m; i++) {scanf("%s",s); x=read(), y=read();if(s[0]=='F') Union(x, y);else Union(x, y+n), Union(x+n, y);}for(int i=1; i<=n; i++) a[i]=find(i);sort(a+1, a+1+n); ans=unique(a+1, a+1+n) - a - 1;printf("%d",ans);
}

BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]相关推荐

  1. 团伙 并查集_BZOJ 1370 Baltic2003 Gang团伙 并查集

    题目大意:给定n个人,朋友的朋友是朋友,敌人的敌人是朋友,朋友之间组成一个团伙,求团伙数 将每个点x拆成两个:x和x+n 如果x和y是朋友,就将x和y合并 如果x和y是敌人,就将x和y+n合并,将y和 ...

  2. 【bzoj1370】[Baltic2003]Gang团伙 并查集

    题目描述 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: 1. 我朋友的朋友是我的朋友: 2. 我敌人的敌人是我的朋友: 所有是朋友的人组成一个团伙.告诉你关于这n个人的m条信息, ...

  3. BZOJ1370 [Baltic2003]Gang团伙

    20多天没写题啊...连键盘长什么样都忘了额... 用这道并查集水题练手2333 1 /******************************************************** ...

  4. 种类并查集(蓝桥侦探)

    蓝桥侦探(种类并查集): 提示:并查集请看这篇博客,讲的十分完美!-->[算法与数据结构]-- 并查集 记录一道种类并查集的题目, 原题链接:戳我 题目描述: 小明是蓝桥王国的侦探. 这天,他接 ...

  5. poj 1703(种类并查集)

    题目大意:在这个城市里有两个黑帮团伙,现在给出N个人,问任意两个人他们是否在同一个团伙 输入D x y代表x于y不在一个团伙里 输入A x y要输出x与y是否在同一团伙或者不确定他们在同一个团伙里 解 ...

  6. Find them, Catch them POJ - 1703(种类并查集)

    题意: 在这个城市里有两个黑帮团伙,现在给出N个人,问任意两个人他们是否在同一个团伙 1.输入D x y代表x于y不在一个团伙里 2.输入A x y要输出x与y是否在同一团伙或者不确定他们在同一个团伙 ...

  7. Poj(1703),种类并查集

    题目链接:http://poj.org/problem?id=1703 已经不是第一次接触种类并查集了,直到今天才搞懂. 感谢红黑联盟,感谢杰哥!!! 每个节点只要关系确定,不管是不是同一个集合里面, ...

  8. POJ 1703 Find them, Catch them 种类并查集

    题意 给出一堆点和关系 D为两点不同集合 A为查询两点是否不同集合 n<=1e5 code #include<cstdio> #include<iostream> #in ...

  9. 【POJ - 1703】Find them, Catch them(带权并查集之--种类并查集 权为与父节点关系)

    题干: Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36176   Accep ...

最新文章

  1. springmvc五:使用pojo作为参数
  2. 37 个 MySQL 数据库小技巧,不看别后悔!
  3. 设计稿生成代码与 Serverless 的前世今生与未来!
  4. 【万字长文】详解Python时间处理模块-datetime
  5. 英文名字大全(男篇)
  6. Web游戏开发编程:最神奇的“触觉振动”
  7. python在线作业_南开大学20春学期《Python编程基础》在线作业参考答案
  8. nginx核心模块ngx_http_core_module详解
  9. STC15系列的UART串口基础
  10. java雪崩_【并发编程】java 如何解决redis缓存穿透、缓存雪崩(高性能示例代码)...
  11. linux系统安装自主分区,Linux系统的安装(自动引导安装、网络安装、分区选择)...
  12. centos7.4 kubeadm安装Kubernetes 1.14.1 集群
  13. Cocos2D-X笔记(1)制作一个动态的精灵
  14. 物流行业GPS定位应用解决方案
  15. FlashFXP 5安装、远程访问服务器、以及修改密码
  16. 计算机台式内存条,台式电脑怎么装内存条_台式电脑加装内存条方法-win7之家
  17. 高中会考计算机都考啥,高中会考都有哪些科目
  18. matlab边角网间接平差计算,12.2测边网与边角网间接平差
  19. 根据二叉树的先序遍历和中序遍历建立二叉树
  20. INI配置——《跟我学Shiro》

热门文章

  1. MVP使用中不好的味道
  2. (0060)iOS开发之iOS 9: UIStackView入门
  3. uniapp在ios端每个页面都可以上下拉,阻止方法
  4. Swift5.1 语言参考(六) 声明
  5. 记数据结构MOOC-二叉树
  6. 1054. 求平均值 (20)
  7. mybatis中(Oracle)关于insert时主键自动加1的使用方法
  8. hadoop端口号列表
  9. vs2010无法调试JS
  10. tableView的plain样式的headerView的上拉过程中悬停解决方法