20多天没写题啊。。。连键盘长什么样都忘了额。。。

用这道并查集水题练手2333

 1 /**************************************************************
 2     Problem: 1370
 3     User: rausen
 4     Language: C++
 5     Result: Accepted
 6     Time:36 ms
 7     Memory:816 kb
 8 ****************************************************************/
 9
10 #include <cstdio>
11 #include <algorithm>
12
13 using namespace std;
14 const int N = 1005;
15
16 int n, m, ans;
17 int fa[N << 1], a[N];
18
19 int read() {
20   int x = 0;
21   char ch = getchar();
22   while (ch < '0' || '9' < ch)
23     ch = getchar();
24   while ('0' <= ch && ch <= '9')
25     (x *= 10) += ch - '0', ch = getchar();
26   return x;
27 }
28
29 int find_fa(int x) {
30   return x == fa[x] ? x : fa[x] = find_fa(fa[x]);
31 }
32
33 int main() {
34   int i, x, y;
35   char st[5];
36   n = read(), m = read();
37   for (i = 1; i <= n * 2; ++i) fa[i] = i;
38   for (i = 1; i <= m; ++i) {
39     scanf("%s", st);
40     x = read(), y = read();
41     if (st[0] == 'F')
42       fa[find_fa(x)] = find_fa(y);
43     else fa[find_fa(x)] = find_fa(y + n), fa[find_fa(y)] = find_fa(x + n);
44   }
45   for (i = 1; i <= n; ++i)
46     a[i] = find_fa(i);
47   sort(a + 1, a + n + 1);
48   for (i = 1; i <= n; ++i)
49     if (a[i] == 1 || a[i] != a[i - 1])
50       ++ans;
51   printf("%d\n", ans);
52   return 0;
53 }

View Code

转载于:https://www.cnblogs.com/rausen/p/4253763.html

BZOJ1370 [Baltic2003]Gang团伙相关推荐

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

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

  2. 【Baltic2003】【BZOJ1370】Gang团伙(并查集,拆点)

    problem 给定n个人 朋友的朋友是朋友,敌人的敌人是朋友 朋友之间组成一个团伙,求团伙数 solution 将每个点x拆成两个:x和x+n(分别表示x的朋友和敌人) 如果x和y是朋友,就将x和y ...

  3. BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]

    题意: 朋友的朋友是朋友,敌人的敌人是朋友:朋友形成团伙,求最多有多少团伙 种类并查集WA了一节课,原因是,只有那两种关系才成立,诸如朋友的敌人是朋友之类的都不成立! 所以拆点做吧 #include ...

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

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

  5. [颓废史]蒟蒻的刷题记录

    QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...

  6. 关押罪犯(并查集加点问题最详细讲解)

    关押罪犯 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值&q ...

  7. BZOJ1370洛谷P1892 [BOI2003]团伙

    并查集 我们将a的敌人定义为a+n,b的敌人的定义为b+n,所以a与b+n是一类人,b与a+n是一类人,然后就这么合并就好了 代码 //By AcerMo #include<cmath> ...

  8. PAT1034 Head of a Gang (30)(并查集)

    题意: 给出n次通话记录,当通话的人数超过2人并且通话总时长超过k时,这些人就是犯罪团伙,其中通话时间最大的人是头目,要求按字母序输出头目和团伙人数 思路: 就是并查集,将两两通话的人关联在一起,因为 ...

  9. 【PAT - 甲级1034】Head of a Gang (30分)(并查集)

    题干: One way that the police finds the head of a gang is to check people's phone calls. If there is a ...

最新文章

  1. 微软职位内部推荐-Principal Dev Manager
  2. An overview of gradient descent optimization algorithms
  3. deepin 15.11 docker 安装命令
  4. 完全用 gnu/linux 工作,怎样完全用 GNU/Linux 工作
  5. mysql和oracle 开源_MySQL和oracle比较
  6. 安卓手机如何防盗_iphone手机换成安卓手机后如何转移便签备忘录数据?
  7. 计算机系统定期验证,计算机化系统验证基本原则
  8. 【转】用java将pdf转换成jpg图片的代码
  9. 图说: 量子物理学的主要内容
  10. matlab 求信号频率响应,基于MATLAB的频率响应
  11. 企业竞争力分析及综合评价体系的构建
  12. Creational patterns
  13. 华硕ASUS手机平板官方刷机包raw格式解压修改工具
  14. mysql8设置局域网访问
  15. 8. 面向对象 -- 继承
  16. 【ORA-00257:archiver error. Connect internal only, until freed;清理归档日志】
  17. 物联网漏洞挖掘入门--DLINK-DIR-645路由器栈溢出漏洞分析复现
  18. emoji mysql 转 unicode_如何转义emoji表情,让它可以存入utf8的数据库?
  19. 网络教育统考计算机计算总和,【重要】2018年教育部统考办1号文件,全国网络教育本科统考大变革...
  20. 一个平凡的外国人,却对中国大爱无疆

热门文章

  1. Centos挂载新硬盘开机自动挂载
  2. jenkins-邮件通知
  3. 零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)—项目概述篇(一)
  4. Error: Plugin/Preset files are not allowed to export objects, only functions……
  5. 一篇文章教你学会实现模糊搜索结果的关键词高亮显示
  6. python信用评分卡_基于Python的信用评分卡模型分析(二)
  7. 整合Swagger接口文档
  8. 2.5D屏幕有什么好处?
  9. 冰心的作品有哪些?聊一聊冰心都有哪些作品?
  10. 什么是内容电商?核心是“内容”