bzoj 4668 冷战 —— 并查集按秩合并
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4668
按秩合并维护并查集的树结构,然后暴力找路径上的最大边权即可。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const xn=5e5+;
int n,m,fa[xn],t[xn],dep[xn],siz[xn],ans,cnt;
int rd()
{
int ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return f?ret:-ret;
}
int find(int x)
{
if(fa[x]==x)return x;
int f=find(fa[x]);
dep[x]=dep[fa[x]]+;
return f;
}
void merge(int x,int y,int tim)
{
int u=find(x),v=find(y);
if(u==v)return;
if(siz[u]<siz[v])swap(u,v);
fa[v]=u; siz[u]+=siz[v]; t[v]=tim;
}
int query(int x,int y)
{
int u=find(x),v=find(y);
if(u!=v)return ;
int ret=;
if(dep[x]<dep[y])swap(x,y);
while(dep[x]>dep[y])ret=max(ret,t[x]),x=fa[x];
while(x!=y)ret=max(ret,max(t[x],t[y])),x=fa[x],y=fa[y];
return ret;
}
int main()
{
n=rd(); m=rd();
for(int i=;i<=n;i++)fa[i]=i,siz[i]=;
for(int i=,p,u,v;i<=m;i++)
{
p=rd(); u=rd(); v=rd();
u^=ans; v^=ans;
if(!p)merge(u,v,++cnt);
else printf("%d\n",ans=query(u,v));
}
return ;
}
bzoj 4668 冷战 —— 并查集按秩合并的更多相关文章
- BZOJ 4668: 冷战 并查集&&暴力LCA(雾)
利用并查集按秩合并,保存每个点合并的时间: 求时间时,就一直跳u=fa[u],并记录路径上时间的最大值,代表最后一次合并的时间 #include<cstdio> #include<i ...
- BZOJ4668: 冷战 [并查集 按秩合并]
BZOJ4668: 冷战 题意: 给定 n 个点的图.动态的往图中加边,并且询问某两个点最早什 么时候联通,强制在线. 还可以这样乱搞 并查集按秩合并的好处: 深度不会超过\(O(\log n)\) ...
- 【bzoj4668】冷战 并查集按秩合并+朴素LCA
题目描述 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表“铁幕演说”,正式拉开了冷战序幕. 美国和苏联同为世界上的“超级大国”,为了争夺世界霸权,两国及其盟国展开了数十年的斗争 ...
- bzoj 4668 冷战——并查集结构
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4668 不路径压缩,维护并查集的树的结构,查询链上最大值.按秩合并就可以暴爬. #includ ...
- BZOJ 4668: 冷战 并查集启发式合并/LCT
挺好想的,最简单的方法是并查集启发式合并,加暴力跳父亲. 然而,这个代码量比较小,比较好写,所以我写了 LCT,更具挑战性. #include <cstdio> #include < ...
- 【BZOJ-4668】冷战 并查集 + 按秩合并 + 乱搞
4668: 冷战 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 37 Solved: 24[Submit][Status][Discuss] Des ...
- bzoj4668: 冷战 并查集按秩合并
题目链接 bzoj4668: 冷战 题解 按秩合并并查集,每次增长都是小集合倍数的两倍以上,层数不超过logn 查询路径最大值 LCT同解 代码 #include<bits/stdc++.h&g ...
- Dash Speed【好题,分治,并查集按秩合并】
Dash Speed Online Judge:NOIP2016十联测,Claris#2 T3 Label:好题,分治,并查集按秩合并,LCA 题目描述 比特山是比特镇的飙车圣地.在比特山上一共有 n ...
- BZOJ4025 二分图 分治 并查集 二分图 带权并查集按秩合并
原文链接http://www.cnblogs.com/zhouzhendong/p/8683831.html 题目传送门 - BZOJ4025 题意 有$n$个点,有$m$条边.有$T$个时间段.其中 ...
随机推荐
- CodeForces 610B-Vika and Squares,有坑点,不是很难~~
B. Vika and Squares time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- DBCA建库出错ORA-00600: internal error code, arguments
正常步骤安装完成Oralce,通过dbca建库,报错如下图所示: Oracle安装日志中报错如下: [Thread-40] [ 1999-12-15 12:23:54.055 CST ] [Basic ...
- 七牛云成功通过 CMMI3 认证
10 月 31 日,在上海七牛信息技术有限公司青岛会议室举行的 CMMI3 级认证结果发布会上,主任评估师王庆付老师和评估组向公司高层及参与评审的 EPG 成员及项目组成员郑重宣布:经过严格的现场审核 ...
- 第k小整数(树状数组)
洛谷传送门 入门难度.. 没错,但是我并不是要暴力做. 而是用树状数组来做. 先离散化,然后随便搞一搞就可以了.(晕.比暴力还慢) 如果要查找某一区间的的话可以把区间取出重新建树,然后再求.(更暴力) ...
- 【字符串+BFS】Problem 7. James Bond
https://www.bnuoj.com/v3/external/gym/101241.pdf [题意] 给定n个字符串,大小写敏感 定义一个操作:选择任意m个串首尾相连组成一个新串 问是否存在一个 ...
- linux下mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”)的处理方法
最近登录某台服务器的mysql时候总报错: Access[root@log01 ~]# mysql -u root -p Enter password: ERROR 1045 (28000): Acc ...
- visual svn 搭建
详细出处参考:http://www.jb51.net/article/17365.htm 这里提示一个需要注意的地方: 在签入源代码到SVN服务器的时候: 点击Import,弹出下面的窗体(图2-2- ...
- 使用imageMagick 制作圆角矩形和图片加水印
制作圆角矩形好图片水印都是图片合成的操作 composite -gravity southeast mask175.png src.jpg dest.jpg -gravity southeast ...
- oc温习七:结构体与枚举
结构体和枚举都是一种存储复杂的数据.结构体是用户自定义的一种类型,不同类型的集合. 1.结构体的创建及使用 定义结构体类型 struct MyDate { int year; int month; i ...
- .NET作品集:基于svn 的.net 持续集成工具
作品背景 这个.net 持续集成作品还是在2014年的时候从事.net 软件项目开发的时候做的,当时部门还用着vs2008用vb.net做项目(现在也是),项目代码极混乱,版本工具用的vss,而且用的 ...