题意:给定n个点m条边。要使任意两个点可以通过两条严格不同的路径到达。即边不能重复,点可以重复。求需要添加的最小边数
题目就是要求使这个图成为边双连通分量所需添加的最小边数。
我的做法:
将边双连通分量相关的点缩点。然后求出度为1的个数=num。答案就是(num+1)/2或者说是num/2+num%2
理由:度为1的肯定是叶子节点或者根节点。将叶子节点两两配对。如果是奇数的话就任意与一个节点配对成边即可。
我在做边双连通分量缩点的过程异常麻烦。
首先我求出桥,然后删掉这些桥。将连通块缩点(这些连通块是边双连通分量)。然后再计算度数。。写的很多。感觉很麻烦。肯定有更简短的代码。。
---------2014/7/11 在下面还有一个代码 修改过后的。。写法比前面这个简便多了。
//author: CHC
//First Edit Time: 2014-07-11 10:04
//Last Edit Time: 2014-07-11 11:53
#include
#include
#include
#include
#include
#include
#include
//author: CHC
//First Edit Time: 2014-07-11 15:40
//Last Edit Time: 2014-07-11 16:26
#include
#include
#include
#include
#include
#include
#include