题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3177
这个题好假,我一开始用割顶来判断一条边是不是桥,居然wa了,后来就直接判桥brige居然神奇般的AC了。。。不明白。。。
算法:无向图的双连通分量,缩点,求缩点的度。
无向连通分量就是对图进行深搜救可以了,然后记下其中的一些有用信息,比如时间戳,层次度,割顶,桥。具体算法的实现可以参考黑书上(285~)。。。
无向图求割边:以任一节点为起点,深搜,记录每个节点第一次访问的时间DFn,同时记录当前节点不经过其父节点能够访问DFn值最小的节点low。假设a是b的父亲,如果low[b]<=DFn[a],则说明a和b除在同一双连通分量,否则(a,b)是割边,a和b处在不同的双连通分量。
算法:找到割边,获得双连通分量。将同一双连通分量内的节点缩成一个节点,则整个网络变成了一棵树。通过推理可知,把这颗树的叶节点连接起来是最好的方案,需要(cnt%2?(cnt+1)/2:cnt/2)条边。