![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dfs序
meopass
即使摸爬滚打,满身泥泞,我也要前进
展开
-
codeforces gym 101142G Gangsters in Central City
简略题意:一棵树,每个节点有一个局面,根是水源,边是水管。初始每个居民都有水喝。 操作有两种: ‘+ v’, v处的居民楼被强盗占领。 ‘- v’, v处的强盗走了。 对于每个询问,你需要切断一些水管,使得所有强盗没水喝,没水喝的居民尽量少。因为必须有边切才行,所以需要切除的边数最多就是与原来的根相连的边的数目。 原来的树拆成了若干个子树,每个子树的根也有一个边可以切除。单独考虑每个子树的原创 2017-10-07 18:06:13 · 362 阅读 · 0 评论 -
HDU 6200 边双联通分量 + 并查集 + dfs序 + BIT
简略题意:初始给出一张无向图,两种操作: 1. 添加一条(u,v)(u, v)的无向边。 2. 问从uu到vv的路径上的割边有多少。假若不考虑添加边的操作,问有多少割边,我们只需要边双联通缩个点成树,树上的每个边都是割边。从而转化成树上两点间距离。从根dfs一下转化成有根树的问题。现在考虑添加边的过程,其实就是再缩点的过程,先不考虑如何缩点,假如缩了点之后,我们就需要动态更新两点间距离了。对此我原创 2017-10-07 18:33:21 · 340 阅读 · 0 评论 -
HDU 6203 贪心 + LCA + dfs序 + BIT
简要题意:给出一个n+1n+1个点的树,以及若干个点对,需要断开一些点,使得这些点对路径不连通。输出应该断开的最少点数。我们断开一个点,能够影响到的是: 1.1.子树中过这个点的路径. 2.2.一个点在子树中,另一个点在祖先中的路径。为了使得以上两个影响尽可能的大,我们每次需要使得断开的点的子树尽可能大。 因此当我们打算断开一对点对(u,v)(u, v)的时候,为了使得断开的点的影响尽可能大,原创 2017-09-21 17:51:14 · 322 阅读 · 0 评论