CF527E口胡
把一个点拆成两个状态:入度是否为偶数和出度是否为偶数。
然后我们将边随机定向,上述状态都得以确定。
然后,对于一条边,若连接的两边状态都为奇数,那么将这条边反向,这样两边都是偶数了。
我们将剩下的为奇数的状态拿出来,一定有偶数个。可以注意到一定没有边连接其中任意两个状态。
我们新建边连接这些状态即可。很显然你并不能继续压榨原图的边了,所以这样做一定是最少的。
如果入度为奇数的节点和出度为奇数的节点数量不同?
因为出入度为奇数,所以一定有一条边连接/被连接这个节点。此时反转这条边即可令出入度为奇数的节点数量分别加 \(1\) 和 \(-1\)。因为总数一定是偶数且没有任何边连接这两个状态,所以是对的。
复杂度 \(O(n+m)\),不知道为什么并不需要欧拉回路,但是感觉本质很像。