首页 > TAG信息列表 > BZOJ4668
[BZOJ4668] 冷战 - 按秩合并并查集
Description 有 \(n\) 个点,\(m\) 个操作,每次连接两个点,或者询问某两个点最早是在什么时刻开始连通的 Solution 考虑按秩合并并查集 对于每个结点,记录它到它父亲的边的权值为时间戳 询问时,类似朴素 LCA 暴力往上跳即可 #include <bits/stdc++.h> using namespace std; #define int【BZOJ4668】冷战(并查集)
Description 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表“铁幕演说”,正式拉开了冷战序幕。美国和苏联同为世界上的“超级大国”,为了争夺世界霸权,两国及其盟国展开了数十年的斗争。在这段时期,虽然分歧和冲突严重,但双方都尽力避免世界范围的大规模战争(第三次世界大BZOJ4668: 冷战 (并查集 + LCA)
题意:动态给点连边 询问两个点之间最早是在第几个操作连起来的 题解:因为并查集按秩合并 秩最高是logn的 所以我们可以考虑把秩看作深度 跑LCA #include <bits/stdc++.h>using namespace std;const int MAXN = 5e5 + 5;int n, m, cnt;int fa[MAXN];int id[MAXN];int zhi[MAXN];i