摘要:
题意:求最少添加多少条边可变无桥的连通图。分析:接着poj3352的看。对于这种题,我们正常的做法是求桥,删桥,求连通分支,缩点,构建新图,求叶子数。我们有一种简便方法。需要对tarjan算法做一些变化。我们之前规定low[u]是其子孙通过一条返祖边直接到达的点,把这个改成是其子孙可以连续通过多条返祖边所能到达的点。那么low[u]=min(low[v],dfn[u]);这样做的缺陷是,不能求割点了,多次返祖会导致求割点的错误,在多环两两以单个点相连排成一条线,且每两个连接点间只有一条边的情况中,那些连接点本应是割点,但是在dfs过程中,这些连接点之间的边又恰好不是树枝边的话,low[u]可能 阅读全文
posted @ 2011-07-06 20:10
undefined2024
阅读(1827)
评论(3)
推荐(0)
摘要:
题意:本题要求的就是添加多少条边可变无桥的连通图。分析:双连通分支双连通分支分就是一个极大化(一个点只要加进来之后该分支仍然是双连通分支就加进来)的分支,去掉任意一条边这个分支内部仍然连通。也可以理解为去掉桥之后,每个连通分支就是原图的双连通分支。注意:北大培训中说有两种双连通(边的和点的),其实只有边的双连通才是双连通的正规定义。所以我们不对点的双连通进行讨论。求割点和桥可以用tarjan算法,对图进行dfs,记录每个点的第一次到达时间dfn[i]。并记录一个low[i]表示该点及其子孙结点所能到达的dfn最小的点。这个到达并不是普通意义的到达,而是在遍历过程中,通过非树枝边(一定是返祖边, 阅读全文
posted @ 2011-07-06 19:53
undefined2024
阅读(1269)
评论(0)
推荐(0)
摘要:
题意:给出一些不等式,求是否存在可行解。分析:差分约束系统,对于bellman和spfa来说,解差分的不同在于,对于不连通图bellman能直接处理,而spfa不能,需要加入超级源(一个到所有点都有一条长度为0的边的点),并把超级源作为起点,才能保证在扩展过程中到达每个点。否则差分约束系统的部分内容就不会被检测到。当然也不是所有题遇到这种不连通的情况都可以使用超级源。因为这种超级源相当于把不同的连通分支在数轴上的起点都平移到了原点。如题目有特殊要求,则可以对不同的连通分支分别做单独处理。View Code #include <iostream>#include <cstdio 阅读全文
posted @ 2011-07-06 09:40
undefined2024
阅读(695)
评论(0)
推荐(0)