Description

n个集合 m个操作
操作:
1 a b 合并a,b所在集合
2 k 回到第k次操作之后的状态(查询算作操作)
3 a b 询问a,b是否属于同一集合,是则输出1否则输出0

0<n,m<=2∗1040

Sample Input

5 6

1 1 2

3 1 2

2 0

3 1 2

2 1

3 1 2

Sample Output

1

0

1

Solution

  • 这可以用可持久化线段树维护可持久化并查集。

  • 但这里我用的是 roperope 大法(roperope 适用于大量、冗长的串操作)。

Code

#include<cstdio>
#include<ext/rope>
using namespace std;
using namespace __gnu_cxx;
const int N=2e4+1;
int a[N];
rope<int>*f[N];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline int get(int x,int y)
{if(f[x]->at(y)==0) return y;f[x]->replace(y,get(x,f[x]->at(y)));return f[x]->at(y);
}
int main()
{int n=read(),m=read();f[0]=new rope<int>(a,a+1+n);for(int i=1;i<=m;i++){f[i]=new rope<int>(*f[i-1]);int type=read();if(type==1){int x=get(i,read()),y=get(i,read());if(x!=y) f[i]->replace(x,y);}elseif(type==2) f[i]=f[read()]; elseputchar((get(i,read())==get(i,read()))+'0'),putchar('\n');}return 0;
}

BZOJ 3673: 可持久化并查集 by zky相关推荐

  1. bzoj 36733674: 可持久化并查集 by zky

    Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0& ...

  2. bzoj 36733674 可持久化并查集加强版(可持久化线段树+启发式合并)

    CCZ在2015年8月25日也就是初三暑假要结束的时候就已经能切这种题了%%% 学习了另一种启发式合并的方法,按秩合并,也就是按树的深度合并,实际上是和按树的大小一个道理,但是感觉(至少在这题上)更好 ...

  3. BZOJ 3674 可持久化并查集

    https://www.lydsy.com/JudgeOnline/problem.php?id=3674 用可持久化数组维护并查集的fa数组, 查询时间复杂度为nlognlogn,一个log是并查集 ...

  4. bzoj 3674 可持久化并查集加强版——可持久化并查集

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3674 用主席树维护 fa[ ]  和 siz[ ] .改 fa[ ] 和改 siz[ ] 都 ...

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

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

  6. BZOJ5415:[NOI2018]归程(可持久化并查集,最短路)

    Description Input Output Sample Input1 1 4 3 1 2 50 1 2 3 100 2 3 4 50 1 5 0 2 3 0 2 1 4 1 3 1 3 2 S ...

  7. 洛谷P4768 [NOI2018]归程 [可持久化并查集,Dijkstra]

    题目传送门 归程 格式难调,题面就不放了. 分析: 之前同步赛的时候反正就一脸懵逼,然后场场暴力大战,现在呢,还是不会$Kruskal$重构树,于是就拿可持久化并查集做. 但是之前做可持久化并查集的时 ...

  8. 可持久化4--可持久化并查集

    可持久化并查集 可持久化并查集 = 按秩合并并查集 + 可持久化数组 首先并查集不能采用路径压缩,这是因为一次findR操作中,fa数组的很多位置(u->ru)会发生修改,由于每次修改都需要在可 ...

  9. 可持久化线段树【主席树】可持久化并查集【主席树+并查集】

    笼统的主席树原理 众所周知, 主席树是可以持久化的, 换言之你能知道你所维护信息的所有历史状态. 主席树是这样做的: 1. 首先建一颗朴素的线段树,代表初始状态 (下图黑色) , 也就是第0次操作后的 ...

最新文章

  1. Linux下USB suspend/resume源码分析【转】
  2. html标签名都是小写,到底啥是w3c标准(示例代码)
  3. 最新!2001-2021武书连中国大学排行榜Top 20
  4. 连网获取图片的小程序
  5. apscheduler
  6. EBS R12.2 创建应用层的启动和关闭脚本
  7. 【刷题】LOJ 6007 「网络流 24 题」方格取数
  8. 漫谈WebQQ 协议
  9. 微信小程序数据拼接_微信小程序字符串和变量如何拼接
  10. 走进龙芯3A3000(一)安装Loongnix
  11. Tiny6410 的NandFlash(K9GAG08U0E)
  12. Python 2和Python 3 用pip 安装时如何区分
  13. 刷cadn浏览量阅读量第二中方法
  14. 《Linux内核修炼之道》精华分享与讨论(7)——分析内核源码如何入手?(下)
  15. 已解决org.springframework.beans.factory.UnsatisfiedDependencyException org.springframework.beans.factor
  16. css技术点二:字体图标(阿里巴巴字体图标使用)
  17. vijos1153 猫狗大战
  18. Linux——软件安装
  19. SpringCloud采用Jackson序列化统一响应不正当的消息转换器导致的异常问题
  20. 计算机应用基础陈建莉,计算机应用基础——Win7+Office2010

热门文章

  1. 吴恩达 coursera AI 第一课总结+作业答案
  2. (转)自定义EndNote的输出样式(output style)
  3. Python:Selenium错误小结
  4. 二十万字C/C++、嵌入式软开面试题全集宝典四
  5. [云炬创业基础笔记]第二章创业者测试12
  6. [云炬创业基础笔记]第四章测试18
  7. 科大星云诗社动态20210514
  8. 云炬随笔20170901
  9. python加粗_python – 设置为使用标记加粗选定的文本
  10. Delphi笔记整理(二)