RT

题目描述

1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。而且有一点是肯定的,就是:

我朋友的朋友是我的朋友;

我敌人的敌人也是我的朋友。

两个强盗是同一团伙的条件是当且仅当他们是朋友。现在给你一些关于强盗们的信息,问你最多有多少个强盗团伙。

输入输出格式

输入格式:

输入的第一行是一个整数N(2<=N<=1000),表示强盗的个数(从1编号到N)。 第二行M(1<=M<=5000),表示关于强盗的信息条数。 以下M行,每行可能是F p q或是E p q(1<=p q<=N),F表示p和q是朋友,E表示p和q是敌人。输入数据保证不会产生信息的矛盾。

输出格式:

输出只有一行,表示最大可能的团伙数。

输入:       输出:

6                3
4
E 1 4
F 3 5
F 4 6
E 1 2

一看这题,是一道并查集的好 水  题,但好像和以往的不太一样;

想一想,好像是个数学集合;

把朋友并一起,把敌人的敌人并到朋友;

par[n]存 朋友,par[n*2]存敌人;

然后就好了;

#include <cstdio>
#include <algorithm>using namespace std;struct b
{int par[100010];inline void  ih(int n){for(int i=1;i<=2*n;i++)par[i]=i;}int f(int x){return par[x]=(par[x]==x)?x:f(par[x]);}int u(int x,int y){par[f(y)]=f(x);}
}s;
int n,m,sum;
int x,y;
char c;
int main()
{scanf("%d",&n);scanf("%d",&m);s.ih(n);for(int i=1;i<=m;++i){scanf("%s%d%d",&c,&x,&y);if(c=='F'){s.u(x,y);}else if(c=='E'){s.u(y,x+n);            //不要并反了s.u(x,y+n);}}for(int i=1;i<=n;++i){if(s.par[i]==i) sum++;       }printf("%d",sum);
}        

骚代码

转载于:https://www.cnblogs.com/AidenPearce/p/8289730.html

并查集的一般操作 ③相关推荐

  1. HDU 2473 Junk-Mail Filter(并查集的删除操作)

    题目地址:HDU 2473 这题曾经碰到过,没做出来. .如今又做了做,还是没做出来. ... 这题涉及到并查集的删除操作.想到了设一个虚节点,可是我把虚节点设为了要删除的点的父节点.一直是栈溢出,目 ...

  2. Almost Union-Find UVA - 11987(并查集的删除操作)

    题意:求出每个集合的元素个数,及总和,给出三个操作: 1 将含有a元素和b元素的集合合并:2 将a元素放入含有b元素的集合中:3 输出a元素所在集合的元素个数及总和: 思路:正常并查集,与并查集元素的 ...

  3. 【CF566#D】 Restructuring Company (并查集---合并区间操作)

    题干: Even the most successful company can go through a crisis period when you have to make a hard dec ...

  4. *【HDU - 2473】Junk-Mail Filter (并查集--删点操作)

    题干: Recognizing junk mails is a tough task. The method used here consists of two steps:  1) Extract ...

  5. 树形结构 —— 并查集 —— 并查集的删除操作

    对于删除操作,在完美的并查集中(所有节点都直接连接在根节点上),理论上只要把要删除的节点的上级重新指向自己就可以了. 但是实际情况中,并查集形成的树的形态都是不可预估的,如果直接将一个节点指向自己可能 ...

  6. hdu4496并查集的删边操作

    题意:       给你一个图,问你删除一些边后还有几个连通快.. 思路:       典型的并查集删边操作,并查集的删边就是先把不删除的边并查集一边(本题没有不删除的边),然后逆序吧所有要删除的边以 ...

  7. hdu 2473(并查集+删除操作)

    解题思路:这道题有并查集的删除操作,如果直接对这一棵树进行删除节点操作肯定是很困难的.所以可以建立虚拟节点,只要有一个节点要被删除,就直接把它投影到虚拟节点上,即用这个虚拟节点来代替我们要删除的节点. ...

  8. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

  9. 【9.22校内测试】【可持久化并查集(主席树实现)】【DP】【点双联通分量/割点】...

    1 build 1.1 Description 从前有一个王国,里面有n 座城市,一开始两两不连通.现在国王将进行m 次命令,命令可 能有两种,一种是在u 和v 之间修建道路,另一种是询问在第u 次命 ...

最新文章

  1. c语言判断2 1000素数,2是不是素数(C语言判断一个数为素数)
  2. 【 MATLAB 】信号处理工具箱的信号产生函数之 square 函数简记
  3. 高斯赛德尔迭代c语言_逐次超松弛SOR迭代概述
  4. UA MATH564 概率论VI 数理统计基础1
  5. python怎么加图片_python怎么实现添加图片
  6. 设置mysql整形_mysql 整型字段设计
  7. Android 优化电池使用时间——根据需要操作广播接收器
  8. 尝试 Docker + Nginx 部署单页应用
  9. 计算机二级c语言公共基础题,计算机二级C语言笔试公共基础知识课后习题及答案...
  10. 【操作系统】连续内存分配策略
  11. 今天的离离原上草的飞鸽传书
  12. 11Linux_vmtools
  13. windows下WMI使用C++查询用户硬件信息
  14. 滞后问题_富锂正极材料的电压滞后问题
  15. win10系统安装虚拟机
  16. L3G4200陀螺仪学习
  17. 个人计算机架构和相关的设备组件
  18. 栈练习之Example005-检查一个程序中的花括号、方括号和圆括号是否配对
  19. CentOS7安装nginx 代理vsftp服务器
  20. 中国交通物流行业规模预测及未来发展趋势分析报告2021-2027年

热门文章

  1. matlab主成分分析散点图_matlab、R软件等做主成分分析结果不同?为什么?
  2. java编写桌球游戏素材小球图片_你学不好Java还是有原因的!拿走这套Java系统教程,自学必备...
  3. python如何创建不同元素的矩阵_Python numpy学习(2)——矩阵的用法
  4. linux知识点记录二
  5. linux误修改文件名恢复,如何在 Linux 中找出最近或今天被修改的文件-linux修改文件名...
  6. 怎么用ajax导出word_Word文档太大怎么压缩?你应该用这种方法压缩
  7. 循环神经网络matlab程序设计,神经网络及深度学习(包含matlab代码).pdf
  8. adas技术实现途径_未来实现100%清洁电力的途径,带来巨大的健康和工作
  9. Java基础学习巩固3--重载和重写分析及区别
  10. java Jconsole调优