利用并查集按秩合并,保存每个点合并的时间;

求时间时,就一直跳u=fa[u],并记录路径上时间的最大值,代表最后一次合并的时间

#include<cstdio>
#include<iostream>
#define R register int
const int N=500010;
using namespace std;
inline int g() {R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-1:fix;do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
}
int n,m,tim,lst;
int fa[N],t[N],d[N],rk[N];
int getf(int x) {if(x==fa[x]) return x;R ret=getf(fa[x]);d[x]=d[fa[x]]+1; return ret;
}
inline void merge(int u,int v) { ++tim;u=getf(u),v=getf(v);if(u==v) return;if(rk[u]>=rk[v]) fa[v]=u,t[v]=tim;else fa[u]=v,t[u]=tim;if(rk[u]==rk[v]) ++rk[u];
}
inline int ask(int u,int v) { R ans=0;if(getf(u)!=getf(v)) return 0;if(d[u]<d[v]) swap(u,v);while(d[u]!=d[v]) ans=max(ans,t[u]),u=fa[u];while(u!=v) ans=max(ans,max(t[u],t[v])),u=fa[u],v=fa[v];return ans;
}
signed main() {n=g(),m=g(); for(R i=1;i<=n;++i) fa[i]=i,rk[i]=1,d[i]=0;for(R i=1;i<=m;++i) {R k=g(),u=g(),v=g(); u^=lst,v^=lst;if(k) printf("%d\n",lst=ask(u,v));else merge(u,v);}
}

转载于:https://www.cnblogs.com/Jackpei/p/10727132.html

BZOJ 4668: 冷战 并查集暴力LCA(雾)相关推荐

  1. BZOJ 4668 冷战——并查集+LCA

    基情链接♂BZOJ 1977 严格次小生成树--浅析最近公共祖先(LCA) 目录 一.题目:冷战 1.题目描述 2.输入 3.输出 4.样例输入 5.样例输出 二.题解 三.代码 ​ 谢谢! 一.题目 ...

  2. BZOJ 4668: 冷战 并查集

    Time Limit: 10 Sec Memory Limit: 256 MB Submit: 440 Solved: 215 Description 1946 年 3 月 5 日,英国前首相温斯顿· ...

  3. BZOJ 4668 冷战(按秩合并并查集+LCA)

    4668: 冷战 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 627  Solved: 303 [Submit][Status][Discuss] ...

  4. BZOJ4668: 冷战 [并查集 按秩合并]

    BZOJ4668: 冷战 题意: 给定 n 个点的图.动态的往图中加边,并且询问某两个点最早什 么时候联通,强制在线. 还可以这样乱搞 并查集按秩合并的好处: 深度不会超过\(O(\log n)\) ...

  5. [ BZOJ 4668 ] 冷战

    \(\\\) \(Description\) 有\(N\)个点,开始没有边相连,进行按顺序给出的\(M\)个操作: \(0\ u\ v\) 将\(u,v\)两点连一条边 \(1\ u\ v\) 查询\ ...

  6. [BZOJ]4668: 冷战

    题解:我们考虑按秩合并  保证每个点往上跳logn层   然后并查集维护就行 #include <algorithm> #include <iostream> #include ...

  7. jzoj3301-[集训队互测2013]家族【并查集,暴力】

    正题 题目大意 一个图每个边有不同的频率,对于大小为xxx的联通可以共享价值wxw_xwx​.现在要去保留一段频率内的边,使得剩下的联通分量价值之和至少为KKK. 求最小的保留频率宽度. 解题思路 首 ...

  8. 【BZOJ4668】冷战 并查集

    [BZOJ4668]冷战 Description 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表"铁幕演说",正式拉开了冷战序幕. 美国和苏联同为世界上的& ...

  9. BZOJ 4668: 冷战

    Time Limit: 10 Sec Memory Limit: 256 MB Submit: 603 Solved: 292 [Submit][Status][Discuss] Descriptio ...

最新文章

  1. Docker系列 二. Docker 安装 Nginx
  2. Nemuria UML架构图 第3次迭代. 重构
  3. leetcode —— 1282. 用户分组
  4. centos7.0查看IP
  5. TIA Portal
  6. 杰魔(Geomagic Design)逆向工程软件学习1-点云和多边形面片文件的处理
  7. 【目录】【高等数学】【本科笔记】
  8. c++超详细基础教程(快速入门)
  9. oc宏定义的简单理解
  10. Markdown - 如何给文本加下划线
  11. 两台电脑间使用网线连接实现共享
  12. 语音-MFCC,Fbank特征提取
  13. 读书笔记(六)--成交
  14. python中np是什么意思_python中np的作用是什么
  15. python做一个大鱼吃小鱼_Python精灵模块制作的大鱼吃小鱼游戏
  16. 《麦田里的守望者》--[美]杰罗姆·大卫·塞林格
  17. Excel快速核对两张表格
  18. windows AD域的特点
  19. java三种注释_java注释的三种形式分别是什么
  20. 2022 SWPU NSS新生赛|MISC知识点

热门文章

  1. 2019年9月全国计算机公共基础题库【速刷版】
  2. IDEA 报错 Cannot connect to the Maven process. If the problem persists, check the jdk.
  3. 这个社交聊天 App 开源了!
  4. 网络原理——网络层与数据链路层
  5. 【论文阅读】【3d目标检测】Sparse Fuse Dense: Towards High Quality 3D Detection with Depth Completion
  6. 【moeCTF题解-0x01】Reverse
  7. 正则表达式匹配标签里面的内容
  8. vue项目中引入阿里云滑动验证
  9. 无法打开登录所请求的数据库database登录失败用户登录失败
  10. 阿里云建站教程——ECS服务器