并查集
文章平均质量分 55
QAQQQQQQQQQQQ
菜
展开
-
并查集
luogu2661信息传递并查集和图论··就是给一个有向图找最小环思路为一边并集一边更新路径长度代码:#include#include#includeusing namespace std;int n,pic[200005],fa[200005],a[200005],minn=0x7fffff;int find(int x){if(x!=fa原创 2018-01-03 13:12:36 · 242 阅读 · 0 评论 -
并查集+朴素LCA--bzoj4668: 冷战
传送门边权为时间,是递增的,所以连边不会影响答案,不能路径压缩所以用树高按秩合并,然后每次询问的时候找到两个点到lca的路径上最大值就是答案#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#defi...原创 2018-08-18 22:04:36 · 258 阅读 · 0 评论 -
并查集+二分答案--bzoj1821: [JSOI2010]Group 部落划分
传送门这道题可以用kruskal做,不过我觉得二分答案复杂度第一些?二分一个答案mid,检查的时候遍历所有点对,如果i,j的距离比mid小,那么他们一定在一个联通块内此时让fa[find(i)]=ffind(j)注意因为find(i)会变,所以要每次重新算,不能在前面先算find(i),因为这个wa了无数次 二分时可以二分平方保证精度最后再开根代码如下:#incl...原创 2018-09-01 18:36:25 · 234 阅读 · 0 评论 -
tarjan求点双+树上倍增/圆方树+并查集--business
对我没打错名字,就是businessbusinessbusiness题目:solution:这道题有很多种写法,先说我的:先tarjantarjantarjan求点双,一个点双里的点都可以到达那个最小的点,然后每个割点向他在的点双连边建出一棵树,然后用STSTST表一类的树上倍增方法求解,细节很多,注意有些数组空间要开大一倍,注意特判s,ts,ts,t在同一个点的情况还有一种高级写法...原创 2018-11-07 15:11:24 · 213 阅读 · 0 评论 -
LCT(维护边双)--bzoj1969: [Ahoi2005]LANE 航线规划
传送门用LCTLCTLCT维护边双,删边不好操作,可以离线后变成加边。如果两个点u,vu,vu,v已经联通,再加一条(u,v)(u,v)(u,v)的边就会让它变成边双,所以可以用并查集维护联通性。当一条链变成边双就把它在LCTLCTLCT上缩成一个点,具体的可以直接在splaysplaysplay上dfsdfsdfs把所有点的父亲都修改成一个点,而做其他操作如splaysplaysplay和...原创 2018-12-02 19:06:32 · 294 阅读 · 0 评论 -
LCT(动态最小生成树)+kruscal--bzoj2594: [Wc2006]水管局长数据加强版
传送门(好久不打lct板子都快忘了lct维护边权的套路就是把边拆成点,这个点向两边的点分别连边,点权就是边权,原树上的点根据需要可以设点权为inf或者-inf动态最小生成树离线删边变加边,就是在lctlctlct中记录mx[x]mx[x]mx[x]和id[x]id[x]id[x]表示子树点权中最大的点权和点的编号,加入一条新边(x,y)(x,y)(x,y)的时候,如果两点没有联通就连起来,如...原创 2018-12-21 19:05:09 · 354 阅读 · 0 评论