[BZOJ4668] 冷战
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
#include <iostream> #include <cstdio> using namespace std; inline int read() {int res=0;char ch=getchar();while(!isdigit(ch))ch=getchar();while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48),ch=getchar();return res; } #define reg registerint n, m; int tim; int fa[500005], val[500005], dep[500005], siz[500005]; int lstans, ans; int Find(int x) {return fa[x] ? Find(fa[x]) : x;} int Deep(int x) {return fa[x] ? Deep(fa[x]) + 1 : 0;}int main() {n = read(), m = read();while(m --){int opt = read(), x = read(), y = read();x ^= lstans, y ^= lstans;if (!opt) {tim++;int fx = Find(x), fy = Find(y);if (fx == fy) continue;if (siz[fx] > siz[fy]) {siz[fx] = max(siz[fx], siz[fy] + 1);fa[fy] = fx;val[fy] = tim;}else {siz[fy] = max(siz[fy], siz[fx] + 1);fa[fx] = fy;val[fx] = tim;}}else {int fx = Find(x), fy = Find(y);if (fx != fy) {puts("0");lstans=0;continue;}ans = 0;int dx = Deep(x), dy = Deep(y);while (dx > dy) ans = max(ans, val[x]), x = fa[x], dx --;while (dx < dy) ans = max(ans, val[y]), y = fa[y], dy --;while (x != y){ans = max(ans, val[x]);x = fa[x];ans = max(ans, val[y]);y = fa[y];}printf("%d\n", ans);lstans = ans;}}return 0; }
转载于:https://www.cnblogs.com/BriMon/p/9490269.html
[BZOJ4668] 冷战相关推荐
- BZOJ4668: 冷战 [并查集 按秩合并]
BZOJ4668: 冷战 题意: 给定 n 个点的图.动态的往图中加边,并且询问某两个点最早什 么时候联通,强制在线. 还可以这样乱搞 并查集按秩合并的好处: 深度不会超过\(O(\log n)\) ...
- 20211229[按秩合并并查集 最小生成树][BZOJ4668]冷战
20211229[按秩合并并查集.最小生成树][BZOJ4668]冷战 题意:给定N点,动态加边与询问两点最早是哪条边开始连通,强制在线 首先如果离线的话可以直接跑最小生成树,不过代码不好处理. 当然 ...
- bzoj4668 冷战
冷战 Time Limit: 10 Sec Memory Limit: 256 MB Description 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表"铁 幕演 ...
- NOIP模拟系列 [BZOJ4668]冷战
这道题我们整个机房讨论将近半个小时没有出结果,算法导论都翻了. 突然,有一个同学用十分暴力的并查集A了,于是大家兴奋地都打了暴力. Sample Input 5 9 0 1 4 1 2 5 0 2 4 ...
- 2018.08.21 bzoj4668: 冷战(并查集+启发式合并)
传送门 可以发现需要维护连通性和两点连通时间. 前者显然是并查集的常规操作,关键就在于如何维护两点的连通时间. 然后会想到这个时候不能用路径压缩了,因为它会破坏原本树形集合的结构,因此可以启发式按si ...
- bzoj4668: 冷战
扔到一个块里是并查集的工作 然后怎样维护最大的时间? 采用不路径压缩的并查集按秩合并保证复杂度,边权为时间,询问时暴力往上跳 一开始以为连接两个联通块要y向x连边并且y的祖先反向连,实际上是不用的,因 ...
- [BZOJ4668]冷战
题目大意: 一个$n(n\le5\times10^5)$个点的图,初始时没有边,有$m(m\le5\times10^5)$次操作,操作包含以下两种: 1.在$u,v$之间连一条无向边: 2.询问$u, ...
- 【QBXT】学习笔记——Day3/4图论+dp
继续上传一波笔记吧. Day3 1.16AM 今天讲图论,以习题为主. 开篇水题: 给一幅图,若删去一个点后变成一棵树,则这个点合法.问哪些点合法. 思路根据树的性质:这个点不是割点,m-这个点的度数 ...
- 【BZOJ4668】冷战 并查集
[BZOJ4668]冷战 Description 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表"铁幕演说",正式拉开了冷战序幕. 美国和苏联同为世界上的& ...
最新文章
- mac os x 查看网络端口情况
- Linux C编程--string.h函数解析
- 深入理解Python的With-as语句
- 杭电oj2072,2091字符串java实现
- /sys/class/gpio 文件接口操作IO端口(s3c2440)
- 将字符串转换为数组_LeetCode 树 108.将有序数组转换为二叉搜索树
- ToString() 格式化字符串总结
- 利用dos进入mysql数据库操作数据
- USACO sec2.1 Ordered Fractions
- c#:winform中多线程的使用
- 双核CPU揭密:英特尔/AMD没有告诉你的五项事实【ZZ】
- AbstractQueuedSynchronizer AQS源码分析
- C++多线程map读写加锁
- idea快捷键汇总mac_IntelliJ IDEA for mac 快捷键大全
- win10硬盘读写速度测试-crystaldiskmark
- php实现ts流切片,HLS-m3u8播放列表和ts切片(2)
- C#实现语音朗读功能
- matlab 图像输入/显示等
- delphiXE关于线程和多线程、线程的同步与异步执行
- Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)...