BZOJ 4668 冷战(按秩合并并查集+LCA)
4668: 冷战
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 627 Solved: 303
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
0 1 4
1 2 5
0 2 4
0 3 4
1 3 1
0 7 0
0 6 1
0 1 6
1 2 6
Sample Output
3
5
题解
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 const int N=501000; 8 int fa[N],dep[N],size[N],w[N],ans,m,n,tot; 9 int find(int x){ 10 if(fa[x]==x)return x; 11 int y=find(fa[x]); 12 dep[x]=dep[fa[x]]+1; 13 return y; 14 } 15 void getlca(int x,int y){ 16 while(x!=y){ 17 if(dep[x]<dep[y])swap(x,y); 18 ans=max(ans,w[x]); 19 x=fa[x]; 20 } 21 } 22 int main(){ 23 scanf("%d%d",&n,&m); 24 for(int i=1;i<=n;i++)fa[i]=i,size[i]=1; 25 while(m--){ 26 int k; 27 scanf("%d",&k); 28 if(k==0){ 29 int x,y; 30 scanf("%d%d",&x,&y); 31 x^=ans;y^=ans; 32 int a=find(x);int b=find(y); 33 if(a==b){ 34 tot++; 35 continue; 36 } 37 else{ 38 if(size[a]>size[b]){ 39 size[a]+=size[b]; 40 fa[b]=a; 41 w[b]=++tot; 42 } 43 else{ 44 size[b]+=size[a]; 45 fa[a]=b; 46 w[a]=++tot; 47 } 48 } 49 } 50 else{ 51 int x,y; 52 scanf("%d%d",&x,&y); 53 x^=ans;y^=ans; 54 ans=0; 55 int a=find(x);int b=find(y); 56 if(a!=b){ 57 printf("0\n"); 58 continue; 59 } 60 getlca(x,y); 61 printf("%d\n",ans); 62 } 63 } 64 return 0; 65 }
转载于:https://www.cnblogs.com/Xu-daxia/p/9562500.html
BZOJ 4668 冷战(按秩合并并查集+LCA)相关推荐
- 20211229[按秩合并并查集 最小生成树][BZOJ4668]冷战
20211229[按秩合并并查集.最小生成树][BZOJ4668]冷战 题意:给定N点,动态加边与询问两点最早是哪条边开始连通,强制在线 首先如果离线的话可以直接跑最小生成树,不过代码不好处理. 当然 ...
- CCPC-Wannafly Winter Camp Day3 (Div2, onsite) I 石头剪刀布(按秩合并并查集)
题解:每次有两个事件: y y去挑战xx,如果赢了可以坐在x x的位置,打平或者输了就要被淘汰. 询问在进行所有一类事件后,有多少种情况可以让x x现在还没有被淘汰. 对于第二类事件,我们假设x x挑 ...
- 动态图连通性(线段树分治+按秩合并并查集)
在考场上遇到了这个的板子题,,,所以来学习了一下线段树分治 + 带撤销的并查集. 题目大意是这样的:有m个时刻,每个时刻有一个加边or撤销一条边的操作,保证操作合法,没有重边自环,每次操作后输出当前图 ...
- BZOJ 2733 线段树的合并 并查集
思路: 1.线段树合并(nlogn的) 2.splay+启发式合并 线段树合并比较好写 我手懒 //By SiriusRen #include <cstdio> #include < ...
- BZOJ4399魔法少女LJJ——线段树合并+并查集
题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了 LJJ感叹道"这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉 ...
- BZOJ 4668 冷战——并查集+LCA
基情链接♂BZOJ 1977 严格次小生成树--浅析最近公共祖先(LCA) 目录 一.题目:冷战 1.题目描述 2.输入 3.输出 4.样例输入 5.样例输出 二.题解 三.代码 谢谢! 一.题目 ...
- BZOJ 4668: 冷战 并查集暴力LCA(雾)
利用并查集按秩合并,保存每个点合并的时间: 求时间时,就一直跳u=fa[u],并记录路径上时间的最大值,代表最后一次合并的时间 #include<cstdio> #include<i ...
- BZOJ 4668: 冷战 并查集
Time Limit: 10 Sec Memory Limit: 256 MB Submit: 440 Solved: 215 Description 1946 年 3 月 5 日,英国前首相温斯顿· ...
- [BZOJ]4668: 冷战
题解:我们考虑按秩合并 保证每个点往上跳logn层 然后并查集维护就行 #include <algorithm> #include <iostream> #include ...
最新文章
- 01_SQlite数据库简介
- 查看mysql服务的可视化_Prometheus 监控Mysql服务器及Grafana可视化
- 一篇文章带你了解Python运算符重载
- [ZT]MSN Messenger的口令获取源代码, MSNMessenger的口令是经过DPAPI加密后保存在注册表中...
- ApacheCN 计算机视觉译文集 20210203 更新
- linux网络协议栈 转发组播,Linux 网络协议栈开发基础篇(十)—— 组播(Multicast)基础...
- LeetCode 647. 回文子串 (动态规划)
- ZABBIX 3.2.7 (源码包)安装部署
- HTML和CSS精要基础知识整理
- 在SQL Server中添加供应用程序使用的帐号
- python论文排版格式_学位论文排版教程2
- 易语言c语言哪个做游戏脚本,游戏简易脚本制作教程
- 单片机驱动mos管电路图
- vue项目中使用百度离线地图
- Windows7主题包:Aero Pure 0.2 更像Win8
- 一天天学WG--第一天
- 试题 基础练习 圆的面积
- 成功学大师枭哥搞砸了,听懂掌声!
- Connection reset by peer 问题解析
- peoplesoft 日志