正题

题目链接:https://www.luogu.com.cn/problem/P4219


题目大意

nnn个点,每次有操作

  1. 加入一条边,保证该边连接了两个不同的连通块
  2. 询问经过一条边的路径数量

解题思路

考虑如何用LCTLCTLCT维护虚子树信息,只要在断边的时候把虚子树的信息维护进该节点即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
using namespace std;
const int N=1e5+10;
int n,q,siz[N],size[N];
struct Link_Cut_Tree{int fa[N],t[N][2];bool r[N];stack<int> s;bool Nroot(int x){return fa[x]&&(t[fa[x]][1]==x||t[fa[x]][0]==x);}bool Direct(int x){return t[fa[x]][1]==x;}void PushUp(int x){size[x]=size[t[x][0]]+size[t[x][1]]+siz[x]+1;return;}void Rev(int x){r[x]^=1;swap(t[x][0],t[x][1]);return;}void PushDown(int x){if(!r[x])return;Rev(t[x][0]);Rev(t[x][1]);r[x]=0;return;}void Rotate(int x){int y=fa[x],z=fa[y];int xs=Direct(x),ys=Direct(y);int w=t[x][xs^1];t[x][xs^1]=y;t[y][xs]=w;if(Nroot(y))t[z][ys]=x;if(w)fa[w]=y;fa[x]=z;fa[y]=x;PushUp(y);PushUp(x);return;}void Splay(int x){s.push(x);while(Nroot(s.top()))s.push(fa[s.top()]);while(!s.empty())PushDown(s.top()),s.pop();while(Nroot(x)){int y=fa[x];if(!Nroot(y))Rotate(x);else if(Direct(x)==Direct(y))Rotate(y),Rotate(x);else Rotate(x),Rotate(x);}return;}void Access(int x){for(int y=0;x;x=fa[y=x]){Splay(x);siz[x]-=size[y]-size[t[x][1]];t[x][1]=y;PushUp(x);}return;}void MakeRoot(int x){Access(x);Splay(x);Rev(x);return;}void Link(int x,int y){MakeRoot(x);MakeRoot(y);fa[x]=y;siz[y]+=size[x];PushUp(y);return;}void Split(int x,int y){MakeRoot(x);Access(y);Splay(y);return;}
}LCT;
int main()
{scanf("%d%d",&n,&q);for(int i=1;i<=n;i++)size[i]=1;while(q--){char op[5];int x,y;scanf("%s %d%d",op,&x,&y);if(op[0]=='Q'){LCT.Split(x,y);printf("%lld\n",1ll*(siz[y]+1)*(siz[x]+1));}else LCT.Link(x,y);}return 0;
}

P4219-[BJOI2014]大融合【LCT】相关推荐

  1. [BZOJ4530][Bjoi2014]大融合 LCT + 启发式合并

    [BZOJ4530][Bjoi2014]大融合 试题描述 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是 ...

  2. bzoj 4530 [Bjoi2014]大融合——LCT维护子树信息

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4530 LCT维护子树 siz .设 sm[ ] 表示轻儿子的 siz 和+1(1是自己的si ...

  3. [Bjoi2014]大融合

    [Bjoi2014]大融合 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 394  Solved: 244 [Submit][Status][Dis ...

  4. LCT维护子树信息(BZOJ4530:[BJOI2014]大融合)

    题面 没有权限号的可以去LOJ Sol 大家都知道,\(LCT\)上有许多实边和虚边 实边就是每棵\(Splay\)上的既认父亲又认儿子的边 虚边就是\(Splay\)和\(Splay\)之间只认父亲 ...

  5. BZOJ4530:[BJOI2014]大融合

    Description 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它 ...

  6. BZOJ 4530 大融合 LCT维护子树信息

    题意: N<=1e5个点,Q<=1e5个操作. 支持加一条边(u,v)(保证图是森林).询问经过边(u,v)的简单路径条数(保证(u,v)存在). 分析: 数据结构学傻了的我,表示并不会用 ...

  7. LOJ#2230. 「BJOI2014」大融合

    LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...

  8. Vue笔记大融合总结

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  9. 极客日报:阿里再度调整组织架构:天猫淘宝大融合,新设三大中心;苹果M1首席芯片设计师跳槽至英特尔

    一分钟速览新闻点! 腾讯接入数字人民币,微信支持数字人民币支付 阿里再度调整组织架构:天猫淘宝大融合,新设三大中心 七成清华毕业生进入体制内就业 北京最受欢迎:华为腾讯等科技企业也受青睐 钉钉近期将推 ...

  10. 重塑大融合体系,立体推进“业财合一”

    3月16日,主题为"智能会计 价值财务"的2023企业数智化财务创新峰会在北京召开.用友网络高级专家张伟发表了题为"聚势向新:智能会计助力企业高质量发展"的演讲 ...

最新文章

  1. reindex-maven 私服(nexus)架设以及项目管理中遇到的问题及解决方案(updating)
  2. MATLAB利用YCBCR切割出人脸头像
  3. pandas 删除列名字符串中的空格
  4. 年度国家科学技术奖:高文周志华王海峰唐杰等上榜,两位“30后”院士获最高奖...
  5. mysql 代理 a_Keepalived+Mysql+Haproxy
  6. LeetCode 640. 求解方程(字符串)
  7. 淘宝万亿级海量交易订单存储在哪?
  8. java中流_java 中流的使用
  9. Python自省(反射)指南 1
  10. mappedbytebuffer_小师妹学JavaIO之:MappedByteBuffer多大的文件我都装得下
  11. bzoj 1688: [Usaco2005 Open]Disease Manangement 疾病管理(状压)
  12. html5 前端js框架,前端h5框架总结
  13. 黑客电影预言或成真,英国核潜艇安全问题堪忧
  14. 浅浅总结一下HTML吧
  15. 贾扬清担任阿里开源技术委员会负责人,开源升级为阿里技术战略之一
  16. java中文转拼音_java中文转拼音
  17. TOC和常识管理 读高德拉特《关键链》
  18. P3396 哈希冲突 (根号算法)
  19. 应用ceph块存储(ceph-13.2.10)
  20. shell入门基础知识

热门文章

  1. java sorted_Java记录 -59- SortedSet
  2. 华为交换机初始化_华为交换机恢复出厂设置
  3. oracle java写目录权限_oracle分配权限 学习笔记--转载
  4. 电子工程系庆贺电贺信_创造下一代光电子集成电路
  5. 利用vector实现一对一(pair<int,int>)
  6. C++ 学习之旅(11)——类和结构中的static
  7. fastreport字体自适应_FastReport 自动换行与行高自适应及自动增加空行
  8. mysql boolean_产品操作MySQL第7篇 – 运算符 – IS NULL
  9. Hibernate懒加载问题的5种解决方案
  10. 1575 Gcd and Lcm