poj.1988并查集-路径压缩、更新结点(偏移量)
来源:互联网 发布:软件图标显示异常 编辑:程序博客网 时间:2024/05/17 09:14
题目描述很简单就是有N个盒子,标号分别为1-N,现有两种操作,一种是移动,将包含x的整体方块移到包含y的整体方块的上方,注意是整体移动,另一种为读取操作,输出在x下方方块的个数,那么对于这题感觉就是并查集路径压缩以及更新结点的典型,我们定义一个偏移量代表子节点与根节点的距离,然后定义一个son数组代表x下方的结点的个数,这样用根节点的son--所求结点的偏移量-1 就是x下方的方块数量了:下面是代码:
#include <stdio.h>#include <stdlib.h>#define Max 30001int pre[Max];int son[Max];int set[Max];int find(int x){if(x==set[x])return x;int temp=set[x];set[x]=find(set[x]);pre[x]+=pre[temp];return set[x];}int p;int main(){scanf("%d",&p);for(int i=1;i<Max;i++){pre[i]=0;son[i]=1;set[i]=i;}int a,b,c,x,y;while(p--){ getchar();if(getchar()=='M'){scanf("%d%d",&a,&b);x=find(a);y=find(b);set[y]=x;pre[y]=son[x];son[x]+=son[y];}else{scanf("%d",&c);printf("%d\n",son[find(c)]-pre[c]-1);}}return 0;}
- poj.1988并查集-路径压缩、更新结点(偏移量)
- POJ 1988 带偏移量的并查集
- POJ 1182 食物链(种类并查集 + 偏移量)
- POJ 2912 Rochambeau(枚举 + 偏移量并查集)
- 【带偏移量的并查集】:poj***,Butterfly
- POJ 1988 Cube Stacking(并查集+路径压缩)
- POJ 1703 1182 2492 一类并查集题目-(类别偏移量)
- POJ 2492 A Bug's Life(种类并查集 + 偏移量)
- poj 1611 并查集 + 压缩路径
- POJ 1988 Cube Stacking(路径压缩并查集)
- poj--1611--并查集(路径压缩运用)
- poj 1703 , hdu 1729 , poj 1182 并查集偏移量应用
- HDOJ 1856 More is better (并查集 + 压缩路径 + 结点深度)
- Hdu 1829 A Bug's Life && Poj 1182 食物链 (并查集偏移量的应用)
- poj 1703 Find them, Catch them(带偏移量并查集)
- poj 1182--食物链(并查集,向量偏移)
- poj 1733 Parity game (并查集+向量偏移)
- 亲戚 (并查集路径压缩)
- 调用 libcurl 出现各种莫名其妙的问题!shit
- Eclipse(Android)工程依赖和jar的关系
- C++初始化与赋值
- 黑马程序员---线程间通信、停止线程等
- 一道面试题
- poj.1988并查集-路径压缩、更新结点(偏移量)
- vi的高级使用
- 课下总结
- 验证文本框只能输入数字
- merge into多表关联更新
- 链表分段反转
- 常用正则表达式
- HUT_ACM #1 D Matrix Multiplication(ZOJ-2316)
- 用java生成html文件