P7687 [CEOI2005] Critical Network Lines
简要题意
给你一张图,图上有两类点 $A$ 和 $B$,现在要求你找到满足下面条件的边:删除这条边后该图变为两个块,且至少有一个块中只包含 $A$ 类点或只包含 $B$ 类点。
策略分析
我们不难看出题目想让我们求的边是图中的割边,但并非所有的割边都满足题目的条件。如下图(图中边上的数字是编号不是边权):

这幅图中的割边有 $1,4,5,6,8$ 五条,而符合题目条件的只有 $1,6,8$ 这三条。仔细考虑我们在深搜的时候形成的深度优先生成树的性质,我们发现,当一个割边满足条件当且仅当它连接的一个节点在深度优先生成树中的子树内只包含一类点(如果后面看不懂建议反复阅读体会这句话)。求割边的时候,每找到一条割边 $(u,v)$,我们就检查一下以 $v$ 为根结点的子树内 $A$ 和 $B$ 类结点各自的数量,当其中一个个数为 $0$ 或者全满,就是要求的边,打上标记并给计数的答案加一就可以了。求数量的过程,可以在 $\operatorname{dfs}$ 的时候递归计算。
实现
1 |
|
说些什么吧!