【BZOJ】4668 冷战
Description Description
被省略的一大坨题目无关信息=w=
一开始这些军工厂之间是不存在铁路的
现在总共有 M M 个操作,操作分为两类:
• 00 u u vv,这次操作苏联会修建一条连接 u u 号军工厂及 vv 号军工厂的铁
路,注意铁路都是双向的;
• 1 1 uu v v, ReddingtonReddington 需要知道 u u 号军工厂及 vv 号军工厂最早在加入第几条条铁路后会联通,假如到这次操作都没有联通,则输出 0 0;
InputInput
第一行两个整数 N,M N, M。
接下来 M M 行,每行为 00 u u vv 或 1 1 uu v v 的形式。
数据是经过加密的,对于每次加边或询问,真正的 uu, v v 都等于读入的
uu, v v 异或上上一次询问的答案。一开始这个值为 00。
1≤N,M≤500000 1 ≤ N, M ≤ 500000,解密后的 u u, vv 满足 1≤u,v≤N 1 ≤ u, v ≤ N, u u不等于vv
Output Output
对于每次 1 1 操作,输出 u,vu, v 最早在加入哪条边后会联通,若到这个操
作时还没联通,则输出 0 0。
SolutionSolution
很明显,连通性的判断要用并查集,但是这个路径带有时间,不支持压缩
那么只能按秩合并(即按size)
然后……就没有然后了=w=
#include<stdio.h>
#include<algorithm>
#define N 500001using namespace std;int t,tot,n,m,f[N],s[N],c[N],ans[N],u,v,la,C,T[N];int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++) s[i]=1;while (m--){scanf("%d%d%d",&C,&u,&v);u^=la,v^=la;if (C){t++;ans[u]=c[u];ans[v]=c[v];bool flag=1;for (int lu=0;u;lu=u,u=f[u]) ans[u]=max(c[lu],ans[lu]),T[u]=t;for (int lv=0;v;lv=v,v=f[v]) if (T[v]==t){printf("%d\n",la=max(ans[v],max(c[lv],ans[lv])));flag=0;break;}else ans[v]=max(c[lv],ans[lv]);if (flag) printf("%d\n",la=0);}else{tot++;while (f[u]) u=f[u];while (f[v]) v=f[v];if (u==v) continue;if (s[u]<s[v]) u^=v^=u^=v;s[u]+=s[v];f[v]=u;c[v]=tot;}}
}
【BZOJ】4668 冷战相关推荐
- BZOJ 4668 冷战(按秩合并并查集+LCA)
4668: 冷战 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 627 Solved: 303 [Submit][Status][Discuss] ...
- [BZOJ]4668: 冷战
题解:我们考虑按秩合并 保证每个点往上跳logn层 然后并查集维护就行 #include <algorithm> #include <iostream> #include ...
- BZOJ 4668 冷战——并查集+LCA
基情链接♂BZOJ 1977 严格次小生成树--浅析最近公共祖先(LCA) 目录 一.题目:冷战 1.题目描述 2.输入 3.输出 4.样例输入 5.样例输出 二.题解 三.代码 谢谢! 一.题目 ...
- BZOJ 4668: 冷战
Time Limit: 10 Sec Memory Limit: 256 MB Submit: 603 Solved: 292 [Submit][Status][Discuss] Descriptio ...
- BZOJ 4668 冷战
Description 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表"铁 幕演说",正式拉开了冷战序幕. 美国和苏联同为世界上的"超级大国&qu ...
- BZOJ 4668: 冷战 并查集
Time Limit: 10 Sec Memory Limit: 256 MB Submit: 440 Solved: 215 Description 1946 年 3 月 5 日,英国前首相温斯顿· ...
- [ BZOJ 4668 ] 冷战
\(\\\) \(Description\) 有\(N\)个点,开始没有边相连,进行按顺序给出的\(M\)个操作: \(0\ u\ v\) 将\(u,v\)两点连一条边 \(1\ u\ v\) 查询\ ...
- BZOJ 4668: 冷战 并查集暴力LCA(雾)
利用并查集按秩合并,保存每个点合并的时间: 求时间时,就一直跳u=fa[u],并记录路径上时间的最大值,代表最后一次合并的时间 #include<cstdio> #include<i ...
- 【HYSBZ - 4668】 冷战
黑暗世界的大门 先说说本题的思路. 一看到什么联通啊,查询啊,心里猛地一喜:啊,并查集~~~ 然而,不能用简便方法处理. 1. 用数组存结果再查询a[u][v]表示第一次可以的时间,没什么的,只是会爆 ...
最新文章
- 美团实习面试:熟悉红黑树是吧?能不能写一下?
- 布线须知:机柜在数据中心机房的三个新用途
- android 编写系统应用,Android应用快速开发系统设计与实现
- php动态修改配置文件
- dreamweaver中的JSP的编程环境配置
- C#之获取mp3文件信息
- Java中如何生成jar(框架)
- ES5-8 闭包高级、对象、构造函数、实例化
- java中static作用详解(版本二)
- mysql 5.7.10免安装_免安装版mysql5.7.10-16配置教程(2)
- Python学习笔记(四)—生成随机数
- (html字体图片纯css插件)Font Awesome
- VS无法启动程序调试监视器未能启动
- win10无法修改mac地址_电脑MAC地址(物理地址)修改方法
- 答答星球微信答题小程序头脑王者源码带后台手机app开发排位pk
- SkipList 一种使用概率替代平衡树的数据结构
- 如何修改背景色?证件照背景颜色怎样换成白色?
- 靠卖艺还债:罗永浩的冬天来了!
- android 辅助服务默认开启,Android 检测辅助功能是否开启,并调整设置页面
- 阴阳师自动御魂觉醒超鬼王脚本
热门文章
- 怎么用注册表来删除卸载程序
- 比 Elasticsearch 更快 RediSearch + RedisJSON = 王炸
- 树莓派自定义分辨率适配带鱼屏(2560*1080)
- iPhone访问Ubuntu网络共享文件夹
- Spherical Harmonic Lighting(球谐光照)
- 单臂路由配置-ZTE中兴交换机
- c语言大学教程答案pdf,C++大学教程(第九版) 保罗·戴特尔(Paul Deitel)等著 完整中文pdf扫描版[197MB]...
- HDU 6441 Find Integer(数论)
- 关于一些数据集的下载链接
- centos7密码正确登录失败