Solution

线段树分治, 然后直接在线段树上dfs, 在进入/回溯的过程中维护并查集的merge/split.

对于split操作, 可以在merge时按秩合并, 然后利用栈记录, split时恢复即可.

Code

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
using namespace std;
#define rep(i,l,r) for(register int i=(l);i<=(r);++i)
#define repdo(i,l,r) for(register int i=(l);i>=(r);--i)
#define il inline
typedef double db;
typedef long long ll;//---------------------------------------
const int nsz=5050,msz=5e5+50;
int n,m;
int edno[nsz][nsz],pe=0,pq=0,pq1=1;
struct te{int f,t,l,r;}edge[msz];
struct tq{int a,b,t,ans;}que[msz];int fa[nsz],dep[nsz];
int stk[msz][2],top=0;//0 y; 1 dep[x]
int find(int p){return p==fa[p]?p:find(fa[p]);}
bool conn(int a,int b){return find(a)==find(b);}
void merge(int a,int b){a=find(a),b=find(b);if(a==b)return;if(dep[a]<dep[b])swap(a,b);stk[++top][0]=b,stk[top][1]=dep[a];fa[b]=a,dep[a]=max(dep[a],dep[b]+1);
}
void del(int top1){for(;top!=top1;--top){int a=stk[top][0],b=stk[top][1];dep[fa[a]]=b,fa[a]=a;}
}vector<int> ee[msz*4];
#define ls(p) ((p)<<1)
#define rs(p) ((p)<<1|1)
void insert(int v,int l,int r,int rt,int rl,int rr){if(l<=rl&&rr<=r){ee[rt].push_back(v);return;}int mid=(rl+rr)>>1;if(l<=mid)insert(v,l,r,ls(rt),rl,mid);if(mid<r)insert(v,l,r,rs(rt),mid+1,rr);
}
void dfs(int rt,int rl,int rr){int now=top;for(int i:ee[rt])merge(edge[i].f,edge[i].t);if(rl==rr){while(pq1<=pq&&que[pq1].t==rl)que[pq1].ans=conn(que[pq1].a,que[pq1].b),++pq1;}else{int mid=(rl+rr)>>1;dfs(ls(rt),rl,mid);dfs(rs(rt),mid+1,rr);}del(now);
}int main(){
//  freopen("a.in","r",stdin);
//  freopen("a.out","w",stdout);ios::sync_with_stdio(0),cin.tie(0);cin>>n>>m;int a,b,c;rep(i,1,m){cin>>a>>b>>c;if(b>c)swap(b,c);if(a==0){edge[++pe]=(te){b,c,i,m};edno[b][c]=pe;}else if(a==1){edge[edno[b][c]].r=i;}else{que[++pq]=(tq){b,c,i,0};}}rep(i,1,n)fa[i]=i,dep[i]=1;rep(i,1,pe)insert(i,edge[i].l,edge[i].r,1,1,m);dfs(1,1,m);rep(i,1,pq){cout<<(que[i].ans?"Y":"N")<<'\n';}return 0;
}

转载于:https://www.cnblogs.com/ubospica/p/10608486.html

loj121-动态图连通性相关推荐

  1. #Loj121 动态图连通性

    Description 你要维护一张无向简单图.你被要求加入删除一条边及查询两个点是否连通. 0:加入一条边.保证它不存在. 1:删除一条边.保证它存在. 2:查询两个点是否联通. Input 输入的 ...

  2. 动态图连通性(线段树分治+按秩合并并查集)

    在考场上遇到了这个的板子题,,,所以来学习了一下线段树分治 + 带撤销的并查集. 题目大意是这样的:有m个时刻,每个时刻有一个加边or撤销一条边的操作,保证操作合法,没有重边自环,每次操作后输出当前图 ...

  3. LOJ 121 「离线可过」动态图连通性——LCT维护删除时间最大生成树 / 线段树分治...

    题目:https://loj.ac/problem/121 离线,LCT维护删除时间最大生成树即可.注意没有被删的边的删除时间是 m+1 . 回收删掉的边的节点的话,空间就可以只开 n*2 了. #i ...

  4. 动态图或动态网络的表示

    动态图(动态网络)有多种形式的表示,以下对此进行一个系统的阐述. (接触序列-Contact Sequence) 在下图中,有 N N N个顶点 V V V在特定时间彼此交互,并且交互的持续时间可以忽 ...

  5. 【推荐系统->论文阅读】Dynamic Graph Neural Networks for Sequential Recommendation(用于序列推荐的动态图神经网络)

    Dynamic Graph Neural Networks for Sequential Recommendation(用于序列推荐的动态图神经网络) Mengqi Zhang, Shu Wu,Mem ...

  6. 动态图相册 android,‎App Store 上的“动态图相册”

    累计1000+"真实"五星好评 9大核心功能:GIF播放.GIF保存.GIF分享.GIF压缩.文件夹管理.全网GIF搜索.全网GIF浏览.导入导出.GIF制作 累计1000+&qu ...

  7. 兼容超大图片的处理_动态图适用性调研与兼容性方案

    背景 业务中大量使用gif动态图,动画不细腻,体积大,占用不必要的带宽,根据这几点,寻找能替代gif图的方案(动画流程,体积小) 动态图类型 GIF GIF 是一个非常古老的格式,1987 年诞生,最 ...

  8. 可能是最详尽的PyTorch动态图解析

    ↑ 点击蓝字 关注视学算法 作者丨Gemfield@@知乎 来源丨https://zhuanlan.zhihu.com/p/61765561.https://zhuanlan.zhihu.com/p/ ...

  9. 详尽 | PyTorch动态图解析

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:深度学习这件小事 背景 PyTorch的动态图框架主要是 ...

  10. dogdoggo搜索引擎_Giphy:专搜GIF动态图的搜索引擎

    无论是在社交网站.网络论坛还是聊天工具上,GIF动态图都是个可重口.可清新.可搞笑.可卖萌的好东西.但是,对于喜欢GIF的人们来说,搜索特定主题的高质量GIF却是一件很困难的事情--虽然百度图片也能搜 ...

最新文章

  1. GitHub上README.md教程
  2. 我从阿里面试回来,想和Java程序猿谈一谈
  3. Unity2D游戏开发基础教程1.2项目、资源和场景
  4. js控制每行输出2个LI隔行换色
  5. LibreOJ 数列分块入门
  6. 每天一道LeetCode-----找到1,2,...,n这n个数所有的组合,每个组合有k个元素,且元素大小递增
  7. Win2003下Exchange2003部署图解之七
  8. 手机端html使用地理定位,html5之使用地理定位
  9. bzoj 1093 [ ZJOI 2007 ] 最大半连通子图 —— 拓扑+DP
  10. 李开复:无人驾驶必须一步到位,没有所谓的人机协同
  11. 没解决:RuntimeWarning: tp_compare didn't return -1 or -2 for exception
  12. 信息搜集-敏感信息泄露
  13. 千千静听皮肤急速合成器
  14. sizebox模型下载_css盒子模型:内联盒模型、width、height、替换元素、边距、border...
  15. Python爬取码市项目
  16. halcon在图片上画几何形状并保存
  17. ZDM2004工具式绘图软件v1.7 for AutoCAD2004 1CD(水电版)
  18. tmc4361 闭环_TMC4361A是一种小型化、高性能的驱动步进电机的运动控制器
  19. vs+qt 在改完ui界面后在程序中出现找不到成员变量或者ui界面不更新。
  20. 在二十四节气中,冬至是个大节气,从冬至以后就开始数九啦一九二九不出手,

热门文章

  1. 倪海厦天纪笔记16_倪海厦-天纪16
  2. PHP使用AES加密和解密
  3. 【C++】关于set的一些奇怪问题:错误C2676 二进制“<”:“const _Ty”不定义该运算符或到预定义运算符可接收的类型的转换
  4. 斯蒂文斯理工学院计算机科学硕士,2020年斯蒂文斯理工学院排名TFE Times美国最佳计算机科学硕士专业排名第80...
  5. 微信小程序:UI好看的王者荣耀战力查询助手小程序源码
  6. 计算机课睡觉检讨书,上课睡觉检讨书范文三篇
  7. Asp.net教师管理系统
  8. 从乔布斯的演讲中获得的启示
  9. 搞副业被领导发现了,让我要么停止,要么滚蛋!
  10. 基于jsp+mysql+Spring+SpringMVC+mybatis的高速公路收费管理系统