题意
给一个无向图,求经过每条边至少一次的最短回路。
第
i
i
i条边的边权为
2
i
2^i
2i.
n
,
m
≤
1
0
5
n,m\le 10^5
n,m≤105
题解
考虑对于经过每条边至少一次这个条件,如果是恰好一次就是比较熟悉的欧拉回路了,于是将经过多次的边看作多条边,又一张联通图存在欧拉回路的充要条件是每个点度数为偶,于是要求的就是使每个点度数为偶的最小边权和。
首先每条边先选一次(题目要求),然后贪心地想,每个原来度数为奇数的点只主动地选一条(不排除其他点的选择使它的度数被动增加)。但这样还是没法形成一个拓扑的顺序,难以选择。
考虑"第 i i i条边的边权为 2 i 2^i 2i"这个条件有什么用,发现如果一条边能被若干条比它更小的边代替,那么用比它更小的边一定最优,于是对于连接两个点的一条边,如果存在另一条这两个点的路径满足路径上所有边权都比这条边小,而这条路径又是等效的,那么这条边一定不会被选。
发现上面的操作类似于最小生成树的过程,即只有最小生成树上的边可能被选,于是建出最小生成树后,从叶子节点往上确定每条边是否要选即可。