题意:进行m次操作,M x y 将包含x的集合移动到y上面,C x, 计算x下面有几个元素。

解题思路:这道题很容易想到用并查集,但是这里有点绕;最开始我想到的是建立一个num[x],表示x以下的节点数,但这样会有一个问题,要更新num[x]时,必须要枚举哪些节点的父节点为p,由于节点数太多,所以TLE是难免的。。。。

这里有一个好办法:在算x以下节点数时,可以用x所在集合元素的个数 - 在它之上的个数 - 它本身。这样就可以避免枚举了。

AC:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 30005;
int fa[maxn],cnt[maxn],top[maxn];int find(int x)
{if(fa[x] == x) return x;int t = fa[x];fa[x] = find(fa[x]);top[x] += top[t];return fa[x];
}void Union(int x,int y)
{int fx = find(x);int fy = find(y);if(fx != fy){fa[fy] = fx;top[fy] = cnt[fx];cnt[fx] += cnt[fy];}
}int main()
{int p,a,b;char ch;for(int i = 1; i < maxn; i++){fa[i] = i;top[i] = 0;cnt[i] = 1;}scanf("%d",&p);while(p--){getchar();ch = getchar();if(ch == 'M'){scanf("%d%d",&a,&b);Union(a,b);}else {scanf("%d",&a);int f = find(a);printf("%d\n",cnt[f] - top[a] - 1);}}return 0;
}

poj 1988(并查集)相关推荐

  1. poj 3310(并查集判环,图的连通性,树上最长直径路径标记)

    题目链接:http://poj.org/problem?id=3310 思路:首先是判断图的连通性,以及是否有环存在,这里我们可以用并查集判断,然后就是找2次dfs找树上最长直径了,并且对树上最长直径 ...

  2. poj 2985(并查集+线段树求K大数)

    解题思路:这道题并查集很容易,合并时找到父节点就直接加上去就ok了.关键是如何求K大数,我一直在想用线段树怎么写,一开始想如果直接记录数的大小那肯定是没戏了,借鉴了一下别人的思路:区间[a,b]记录的 ...

  3. POJ 2492 并查集,带权或带偏移量并查集 【例题详解】

    分析这道题,我们可以得出,假如a,b,c三只虫子,a和b可以交配,b和c也可以交配,那么a和c一定是同行,因为他们和同一个异性交配了.所以我们可以把关系抽象成图,在ab之间,bc之间各连一条线长度为1 ...

  4. poj 1703 并查集

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

  5. POJ 并查集 题目汇总 ——czyuan原创(转)

    继续数据结构的复习,本次的专题是:并查集. 并查集,顾名思义,干的就是"并"和"查"两件事.很多与集合相关的操作都可以用并查集高效的解决. 两个操作代码:    ...

  6. 【POJ】1308 Is It A Tree?((并查集 + set)or (map))

    http://poj.org/problem?id=1308 这个题数组开到200就可以了,但题目中貌似没有说呢? 读入每一对顶点,看看他们是否在同一个集合中,如果是的话,肯定成环,不是一棵树. 用s ...

  7. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

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

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

  9. POJ 2236 Wireless Network 并查集

    Wireless Network 并查集 Crawling in process... Crawling failed Time Limit:10000MS     Memory Limit:6553 ...

最新文章

  1. lamda表达式python_Python--13 lambda表达式
  2. OpenGLES 关于 数学 的分支 - 线性变化量、离散量、随机量
  3. qq传java文件_java学习:基于TCP的网络文件传输(可改写的QQ文件传输)
  4. 多特征值数据预处理_「人工智能」No.6 特征工程之数据预处理
  5. dubboSPI机制浅谈
  6. No.1 字符编码数据类型
  7. eclipsevue代码怎么运行_打了多年的单片机调试断点到底应该怎么设置? | 颠覆认知...
  8. zabbix详解(二)——zabbix工作原理
  9. java jsonarray string_String JSONObject JSONArray 转换
  10. 提醒后来人:钉钉里面的钉盘一定不要用,坑
  11. 51单片机课设--篮球计分器
  12. A - Chloe and the sequence
  13. 海马玩模拟器连接AndroidStudio
  14. 淘宝/天猫获取淘宝直播分类id接口 API 返回值说明
  15. 聊聊办公室装修适合哪些风格以及装修技巧
  16. 【看表情包学Linux】环境安装 | 安装XShell | 基本的账号管理
  17. 微信小程序开发之——拍照上传
  18. 《发现你的心灵》——于丹
  19. Mac OS X: 再续〉安全警告,病毒就在你身边
  20. 2021-12-19 老杨博客推荐\TCP像串口的多程编写的一个弱鸡版本类MQTT的TCP实现\字典值查键\微PYTHON与PYTHON的JSON区别\以及一个ESP32领导多个ESP8266组网模式

热门文章

  1. 如何进行有效的数据治理,提升数据价值?
  2. hg 全局密码配置。
  3. Transition 实现轮播图
  4. U3D-LookAt插值动画
  5. 敏捷个人手机应用:如何使用时中法习惯
  6. 要活多久才能赚回你交的养老金
  7. 防范SQL指令植入式***
  8. 如何做波动率的分析呢?
  9. control theory and application
  10. 测试开发面试准备之HTTP协议-一次完整的Http请求过程