题目链接:HDUOJ 4738 Caocao’s Bridges
题目描述:
给定一个无向图,你可以选择最多删除一条边,删除边的代价是边的边权(特殊地,删除一条边权为
0
的边的代价是1
),问最小代价使得图不连通。如果无论如何图都是连通的,那么则输出-1
。
题解:
题目也就是需要我们求一条桥边,这个桥边所拥有的边权最小。我们只需要求出所有的桥边,然后对边权取一个最小值即可(需要注意边权为
0
的边我们要将其变成边权为1
的边)。同时需要注意的是,对于一个本身就不连通的图,那么最小的花费是0
。
通过Tarjan
判断一条u,v
之间的边是否是桥,我们只需要判断low[v]>dfn[u]
是否成立,不过需要注意的是由于可能存在重边,所以我们在搜索的时候不应该通过反向边更新low[u]
但是可以通过重边更新low[u]
(重边一定不会是桥)。
代码:HDUOJ4738