没什么可说的,就是一个可持久化线段树维护一个数组fa以及deep按秩合并好了

注意一下强制在线

蒟蒻的我搞了好长时间QAQ

贴代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
struct trnt{
int ls;
int rs;
int fa;
int dp;
}tr[];
int root[];
int siz;
int n,m;
int lastans;
void Tr_build(int l,int r,int &spc)
{
if(!spc)
spc=++siz;
if(l==r)
{
tr[spc].fa=l;
return ;
}
int mid=(l+r)/;
Tr_build(l,mid,tr[spc].ls);
Tr_build(mid+,r,tr[spc].rs);
return ;
}
int ask(int l,int r,int pos,int spc)
{
if(l==r)
return spc;
int mid=(l+r)/;
if(pos<=mid)
return ask(l,mid,pos,tr[spc].ls);
return ask(mid+,r,pos,tr[spc].rs);
}
int finf(int rt,int x)
{
int ff=ask(,n,x,rt);
if(tr[ff].fa==x)
return ff;
return finf(rt,tr[ff].fa);
}
void unin(int l,int r,int &spc,int last,int pos,int ff)
{
spc=++siz;
if(l==r)
{
tr[spc].fa=ff;
tr[spc].dp=tr[last].dp;
return ;
}
tr[spc].ls=tr[last].ls;
tr[spc].rs=tr[last].rs;
int mid=(l+r)/;
if(pos<=mid)
unin(l,mid,tr[spc].ls,tr[last].ls,pos,ff);
else
unin(mid+,r,tr[spc].rs,tr[last].rs,pos,ff);
return ;
}
void grow(int l,int r,int pos,int spc)
{
if(l==r)
{
tr[spc].dp++;
return ;
}
int mid=(l+r)/;
if(pos<=mid)
grow(l,mid,pos,tr[spc].ls);
else
grow(mid+,r,pos,tr[spc].rs);
return ;
}
int main()
{
scanf("%d%d",&n,&m);
Tr_build(,n,root[]);
for(int i=;i<=m;i++)
{
root[i]=root[i-];
int cmd;
scanf("%d",&cmd);
if(cmd==)
{
int x,y;
scanf("%d%d",&x,&y);
x=x^lastans;
y=y^lastans;
x=finf(root[i],x);
y=finf(root[i],y);
if(tr[x].fa==tr[y].fa)
continue;
if(tr[x].dp>tr[y].dp)
std::swap(x,y);
unin(,n,root[i],root[i-],tr[x].fa,tr[y].fa);
if(tr[x].dp==tr[y].dp)
grow(,n,tr[y].fa,root[i]);
}else if(cmd==)
{
int x;
scanf("%d",&x);
x=x^lastans;
root[i]=root[x];
}else{
int x,y;
scanf("%d%d",&x,&y);
x=x^lastans;
y=y^lastans;
x=finf(root[i],x);
y=finf(root[i],y);
if(tr[x].fa==tr[y].fa)
lastans=;
else
lastans=;
printf("%d\n",lastans);
}
}
return ;
}

BZOJ3674可持久化并查集(模板)的更多相关文章

  1. bzoj3673可持久化并查集 by zky&&bzoj3674可持久化并查集加强版

    bzoj3673可持久化并查集 by zky 题意: 维护可以恢复到第k次操作后的并查集. 题解: 用可持久化线段树维护并查集的fa数组和秩(在并查集里的深度),不能路径压缩所以用按秩启发式合并,可以 ...

  2. bzoj3674 可持久化并查集

    我是萌萌的任意门 可持久化并查集的模板题-- 做法好像很多,可以标号法,可以森林法. 本来有O(mloglogn)的神算法(按秩合并+倍增),然而我这种鶸渣就只会写O(mlog2n)的民科算法--再加 ...

  3. BZOJ3674: 可持久化并查集加强版

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3674 题解:主要是可持久化的思想.膜拜了一下hzwer的代码后懂了. 其实本质是可持久化fa数 ...

  4. 2019.01.21 bzoj3674: 可持久化并查集加强版(主席树+并查集)

    传送门 题意:维护可持久化并查集,支持在某个版本连边,回到某个版本,在某个版本 询问连通性. 思路: 我们用主席树维护并查集fafafa数组,由于要查询历史版本,因此不能够用路径压缩. 可以考虑另外一 ...

  5. bzoj3673 bzoj3674可持久化并查集

    并查集都写不来了qwq 之前写的是错的 sz的初值都是0,这样怎么加就都是0了,水这道题还是可以,但是加强版就过不了了 #include<cstdio> #include<cstri ...

  6. [BZOJ3674]可持久化并查集加强版&[BZOJ3673]可持久化并查集 by zky

    思路: 用主席树维护并查集森林,每次连接时新增结点. 似乎并不需要启发式合并,我随随便便写了一个就跑到了3674第一页?3673是这题的弱化版,本来写个暴力就能过,现在借用加强版的代码(去掉异或),直 ...

  7. BZOJ3674 可持久化并查集加强版 可持久化 并查集

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3674 题意概括 n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的 ...

  8. 【可持久化数组】【rope】bzoj3673 bzoj3674 可持久化并查集 by zky

    rope教程:http://blog.csdn.net/iamzky/article/details/38348653 Code(bzoj3673): #include<cstdio> # ...

  9. BZOJ 3674: 可持久化并查集模板

    Code: #include <cstdio> #include <algorithm> #include <cstring> #include <strin ...

随机推荐

  1. PipeCAD之管道标准库PipeStd(2)

    PipeCAD之管道标准库PipeStd(2) eryar@163.com Key Words. PipeCAD, PipeStd, 管道设计软件,管件库 1. Introduction 管道标准部件 ...

  2. POJ 1167 The Buses 暴搜+剪枝

    思路: 先把能选的路线都预处理出来 按照能停的车的多少排个序 (剪枝1) 搜搜搜 如果当前剩的车÷当前能停车的多少+deep>=ans剪掉 (剪枝2) //By SiriusRen #inclu ...

  3. Linux系统病毒防治

    Linux系统病毒防治 一.Linux病毒的历史 1996年出现的Staog是Linux系统下的第一个病毒,它出自澳大利亚一个叫VLAD的组织.Staog病毒是用汇编语言编写,专门感染二进制文件,并通 ...

  4. Android studio 导入PullToRefresh

    1.新建一个Android项目,下载好Android-PullToRefresh-master,并解压,找到library文件夹,我把他放在C:\import目录下,下面的都是根据箭头一步一步的点击即 ...

  5. .net 项目分层及规范

       1.解决方案命名:公司简称+产品名称.如ABCSOft.BBS 2.解决方案文件夹:以数字排序例如:01.Web表示页面层:02.IBusinessLogic表示业务逻辑接口:03.Bussin ...

  6. 线程框架Executor的用法举例

    java5线程框架Executor的用法举例 Executor 是 java5 下的一个多任务并发执行框架(Doug Lea),可以建立一个类似数据库连接池的线程池来执行任务.这个框架主要由三个接口和 ...

  7. DedeCMS列表页隔行/多行随意换色

    在很多列表调用的时候都需要有隔行换色或者多行不同颜色,特别在全通式的首页轮展图的时候,要想实现轮展图背景随着图片的更换,超过三张或多张的时候,隔行换色已经不能解决问题了,在原来的隔行换色的基础上,进行 ...

  8. Django_模型操作

  9. Centos6.5 安装lnmp环境

    最近项目要配置在nginx上,所以搜索了下具体nginx的安装,看到这篇文章简洁明了而且测试成功就借用了,作品出处:http://www.cnblogs.com/xiaoit/p/3991037.ht ...

  10. ReadyAPI/soapUI发送post请求json格式(带有中文字符),后台获取参数为空

    解决:请求编码格式默认为空,在"TestCase"的指定Step的Request Properties中, 改Encoding编码格式为UTF-8. 原文:soapUI发送post ...