DTOJ 3772. 开车(carcar)

题意

给一个无向图,求经过每条边至少一次的最短回路。
i i i条边的边权为 2 i 2^i 2i.
n , m ≤ 1 0 5 n,m\le 10^5 nm105

题解

考虑对于经过每条边至少一次这个条件,如果是恰好一次就是比较熟悉的欧拉回路了,于是将经过多次的边看作多条边,又一张联通图存在欧拉回路的充要条件是每个点度数为偶,于是要求的就是使每个点度数为偶的最小边权和。

首先每条边先选一次(题目要求),然后贪心地想,每个原来度数为奇数的点只主动地选一条(不排除其他点的选择使它的度数被动增加)。但这样还是没法形成一个拓扑的顺序,难以选择。

考虑"第 i i i条边的边权为 2 i 2^i 2i"这个条件有什么用,发现如果一条边能被若干条比它更小的边代替,那么用比它更小的边一定最优,于是对于连接两个点的一条边,如果存在另一条这两个点的路径满足路径上所有边权都比这条边小,而这条路径又是等效的,那么这条边一定不会被选。

发现上面的操作类似于最小生成树的过程,即只有最小生成树上的边可能被选,于是建出最小生成树后,从叶子节点往上确定每条边是否要选即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值