博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LOJ121 动态图连通性(LCT)
阅读量:4681 次
发布时间:2019-06-09

本文共 1168 字,大约阅读时间需要 3 分钟。

  用LCT维护一下删除时间的最大生成树即可。当然也可以线段树分治。

#include
#include
#include
#include
#include
#include
#include
using namespace std;int read(){ int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') { if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f;}#define N 5010#define M 500010#define lson tree[k].ch[0]#define rson tree[k].ch[1]#define lself tree[tree[k].fa].ch[0]#define rself tree[tree[k].fa].ch[1]int n,m,x[N+M],y[N+M],v[N+M],cnt;map
f;struct edge{ int op,x,y,del;}q[M];struct data{ int ch[2],fa,rev,s;}tree[N+M];void up(int k){ tree[k].s=k; if (v[tree[lson].s]
q[i].y) swap(q[i].x,q[i].y); if (q[i].op==0) f[1ll*q[i].x*m+q[i].y]=i; if (q[i].op==1) q[f[1ll*q[i].x*m+q[i].y]].del=i; } cnt=n; for (int i=0;i<=n;i++) tree[i].s=i,v[i]=M; for (int i=1;i<=m;i++) if (q[i].op==0&&q[i].del==0) q[i].del=M; for (int i=1;i<=m;i++) if (q[i].op==0) { if (findroot(q[i].x)!=findroot(q[i].y)) newpoint(q[i].x,q[i].y,q[i].del); else { int t=query(q[i].x,q[i].y); if (v[t]

 

转载于:https://www.cnblogs.com/Gloid/p/9383875.html

你可能感兴趣的文章
C++中数值的后缀
查看>>
EventModify
查看>>
mac mysql5.7修改密码
查看>>
C中int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t区别
查看>>
sample_code
查看>>
28天成交了104单,多亏了这5个逼单方法
查看>>
Linux常用快捷键和基本命令
查看>>
java
查看>>
[laravel] Laravel - composer install
查看>>
20190218日记
查看>>
python day2 模块初识、pyc定义
查看>>
一道算法作业题(续)
查看>>
Machine Learning From Scratch-从头开始机器学习
查看>>
基础数据结构
查看>>
python url库学习
查看>>
找“水王”
查看>>
Advanced Views and URLconfs(The Definitive Guild to Django)
查看>>
CodeForces 132C 一道简单 dp
查看>>
018-伸展树
查看>>
FPM打包工具
查看>>