摘要:"原题链接" 算法不难,比赛的时候就和cyc大佬一起yy了正解,不过因为交的时候比较急(要回寝室惹),我有两数组开错大小直接爆到50,cyc大佬则只把文件输入关了一半,直接爆零(╯ ̄Д ̄)╯┻━┻ 要尽量使$k$次删边都能有贡献,那么很容易就想到割边。 所以我们先用$\mathtt{tarjan}$
阅读全文
摘要:"原题链接" 很水的一道题,先用$tarjan$找边双连通分量并缩点,因为缩点后必然是一棵树,所以直接$LCA$求距离即可。 另外因为有重边(说好的只有单键呢),所以需要判重,一开始我用的$HASH$判重,结果又被卡了。。。 ~~和$HASH$天理难容,每次用都被卡~~ 最后一气之下$bitset$
阅读全文
摘要:"原题链接" 题意实际上就是让你添加尽量少的边,使得每个点都在至少一个环上。 显然对于在一个边双连通分量里的点已经满足要求,所以可以用$tarjan$找边双并缩点。 对于缩点后的树,先讲下我自己的弱鸡做法,每次找直径,因为将直径改为环显然使得新添的边贡献最大,这样贪心的连下去,直到所有点满足要求为止
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 显然在一个点双连通分量里,无论是哪一个挖煤点倒塌,其余挖煤点就可以互相到达,而对于一个点双连通分量来说,与外界的联系全看割点,所以我们先用$tarjan$求出点双连通分量,再对每个点双进行讨论。 1. 若该点双不含割点,那么这个点双是与外面隔绝的,至少要设置两
阅读全文
摘要:"原题链接" 建补图,这样题目要求的即是求有多少个点没有被任何奇环包含。 这里有两个结论: 1. 若两个骑士属于两个不同的$v DCC$,那么这两个骑士肯定不能一起出席会议。 2. 若在某个$v DCC$中,存在一个奇环,那么该点双连通分量中所有点都被至少一个奇环包含。 所以,我们只需要在用$tar
阅读全文
摘要:"原题链接" 先用$tarjan$找出所有$e DCC$,并进行缩点,这时桥的数量即是缩点后树的边数。 然后对于每一个添边$(x,y)$的操作,如果$x,y$属于同一个$e DCC$,那么桥的数量不变。 如果分别属于两个$e DCC$,那么从$x$所在的$e DCC$(设为$e[x]$)到$y$所在
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 若第$i$个点不是割点,那么只有这个点单独形成一个连通块,其它点依旧连通,则答案为$2\times (n 1)$。 若第$i$个点是割点,那么去掉这个点相关的边就会形成$3$种构成的连通块: 1. 由点$i$本身构成。 2. 由点$i$的子树(搜索树中)形成若
阅读全文
摘要:一道找割点模板 "原题链接" $tarjan$找割点模板,不解释。 cpp include using namespace std; const int N = 1e5 + 10; int fi[N], di[N '9'; c = getchar()) p |= c == ' '; for (; c
阅读全文