题意
给定一个 (N) 个点,(M) 条边的图,没有自环,没有重边。其中 (N-1le Mle N),每个点初始是白色。每次操作可以处理一条边,其两个点如果颜色相同则都变成相反的颜色(黑变白,白变黑)。询问能否将每个点都变为黑色。如果能,输出最少的操作数;如果不能,输出 (-1).
[1 leq n leq 10^5, n - 1leq m leq n
]
题解
泪目, 根本不会
先考虑树的情况。
据说有套路是按层奇偶分类, 如果看成奇数层是有棋子的, 偶数层没有, 每次的操作就是移动棋子, 使得偶数层放满棋子。小编也不知道咋想到的, 反正确实是对的。
然后就可以发现一条边被移动的次数就是棋子数量和空位的差, 这一步大概可以感觉出来, 然后树大概就搞完了。
然后考虑基环树, 奇环是简单的, 直接断一条边, 然后由于这条边两边颜色一样, 用来消同颜色的东东即可。
偶环的话可以列出移动次数相关的方程, 感觉上就是在数轴上选一个位置使得总和最小, 直接选就好。
至于为啥随便选条边断开就好, 可以考虑是我们考虑这条边的所有作用, 偶环里面实际上我们对所有的情况都考虑了贡献在环上的流动, 奇环里面的是因为本来动了也是要被那条边消掉, 消掉以后更新环上贡献的时候就无法更优了。
太奇妙了