hdu 2767 Proving Equivalences

来源:互联网 发布:origin制图软件下载 编辑:程序博客网 时间:2024/05/17 01:07

    题目大意,给你一个有向图,求出最少添加多少边使得整个图能形成一个强连通分量。

    算法,先跑一边强连通,然后对于dag ,答案就是入度为0顶点个数和出度为0顶点个数的最大值。

    证明:对于这个dag,我们的目标就是将整个图用环连起来,那么我们可以这样考虑, 先将所有的点拆成两个点,就是一个点是入点,另外一个是出点,从入点到出点连一条边,那么将原图添加为强连通等价于我们将这个新图添加为强连通,拆完点之后,我们所有的点就分成了3类,第一类是入度为0的点,另外一类是出度为0的点,最后一类是均不为0的点,那么图中这个时候有一些连通块,所有点连通块起点必定是入度为0的点,终点必定是出度为0的那些点,所有的连通块中,而且必定有至少一个入度为0的,至少一个出度为0的点,假设有m个连通块,那么我们将所有连通块排成环,用m条边使得所有连通块收尾相连,那么现在至少有中间的主链已经变成强连通的了,现在边上还有一些多出来的枝桠还不是强连通,我们需要做的只是将他们连接到主干上就可以了,从所有的剩下的出入为0的点,连接一条边到一个出度为0的点上,那么再次用掉出度为0的和入度为0的较大值,我们就可以将整个图构成强连通。

    所以花费的总边数就是入度为0顶点个数和出度为0顶点个数的最大值.

原创粉丝点击