为什么写这道题还是因为昨天多校的第二题,是道图论,HDU 4612。
当时拿到题目的时候就知道是道模版题,但是苦于图论太弱。模版都太水,居然找不到。
虽然比赛的时候最后水过了,但是那个模版看的还是一知半解,主要还是对于无向图缩点不了解。
所以今天特意找了道求无向图边双连通分量,然后缩点的题学习一下,这道题的缩点和昨天那道差不多,唯一的区别就是这是无重边的,那题是有重边的。
先搞掉这个,下午把有重边的缩点搞一下。
这里给出一些概念。具体可以到神牛博客看一下。
边连通度:使一个子图不连通的需要删除掉的最小边数,就是该图的边连通度。
桥(割边) :删除某条边时,该图不再连通,那么这条边就是该图的桥(割边)。
边双连通分量:边连通度大于等于2的子图称为边连通分量。
一个边连通分量里面的任意两点,都有2条或者2条以上的路可以互相到达。
这道题的题意,给出N个点M条边,都是无向的。
然后叫你求,最少增加多少条边,可以是的整个图成为一个边双联通分量 。
思路:求出所有的边连通分量,设数量为cnt,然后将一个边连通分量中的点缩成一个块,然后重新建图,这样我们就得到了一棵节点数为cnt ,边数为cnt - 1,的树。
该树上的所有边都是桥。
然后要使得这个图成为一个边连通分量,那么只需将所有的叶子节点连起来即可。
所有最后的答案就是(叶子节点的个数+ 1) / 2。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include