摘要:
一道经典的树型DP入门题。dp[u][0/1]表示u点不选或选时以u为根的子树最多能选择的点数。 题目给的有向有环图可以看作森林,注意不是树,因为题目没有说图是连通的! 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 us 阅读全文
摘要:
题目大概是给一张图,动态加边动态求割边数。 本想着求出边双连通分量后缩点,然后构成的树用树链剖分+线段树去维护路径上的边数和。。好像好难写。。 看了别人的解法,这题有更简单的算法: 在任意两点添边,那么两点路径上的边就不是割边了,于是从两点往上走到其LCA,一边缩点一边统计消失的割边数。 这样的时间 阅读全文
摘要:
题目大概是给一个无向连通图,问最少加几条边,使图的任意两点都至少有两条边不重复路径。 如果一个图是边双连通图,即不存在割边,那么任何两个点都满足至少有两条边不重复路径,因为假设有重复边那这条边一定就是割边,与不存在割边矛盾。 这题的解法是:原图的边双连通分量是符合要求的可以看作一点,即把原图的边双连 阅读全文
摘要:
题目要输出一个无向图的所有割边。用Tarjan算法: 一遍DFS,构造出一颗深度优先生成树,在原无向图中边分成了两种:树边(生成树上的边)和反祖边(非生成树上的边)。 顺便求出每个结点的DFS序dfn[u] 和 每个结点能沿着它和它的儿子的返祖边达到的结点最小的DFS序low[u]。 一条边(u,v 阅读全文
摘要:
题目求一个无向图的所有割点,并输出删除这些割点后形成几个连通分量。用Tarjan算法: 一遍DFS,构造出一颗深度优先生成树,在原无向图中边分成了两种:树边(生成树上的边)和反祖边(非生成树上的边)。 顺便求出每个结点的DFS序dfn[u] 和 每个结点能沿着它和它的儿子的返祖边达到的结点最小的DF 阅读全文