首页 > 其他 > 详细

在二分图上加一条边与其逆问题

时间:2018-04-05 23:06:27      阅读:301      评论:0      收藏:0      [点我收藏+]

二分图定义:https://en.wikipedia.org/wiki/Bipartite_graph

考虑正问题,二分图的一个充要条件是图中所有的环都是偶环 * 。

  从而加的边只能形成一个偶环,我们可以将二分图黑白染色,分为两个集合,这样合法边只有两种

    1.横跨两个联通快的边。

    2.在一个联通块且两个端点异色的边。

  这显然是正确的,求有多少个这样的边,分上面两种情况进行分类即可,时间复杂度 O(n)。

接下来考虑逆问题,如何在图上删除一条边使得这个图变成二分图。

  如果这个图本来就是二分图,删一条边不会使得 * 性质消失,从而任意删一条边即可。

  而如果这个图本来不是二分图,那么同理必然存在至少一个奇环,我删的边必然要在这些奇环的交上。

  考虑将这个图dfs出一棵树,进行黑白染色,对于所有的非树边,如果接在同色点上,(记作error边),说明这条边是在一条奇环上面

    1.删非树边,如果这样的边只有一个,那么说明只要我们删去这条边显然可行,而如果有多个的话,此策略显然不能找出任何一条合法边。

    2.删树边,首先由上面的结论知,删的边必然要在,所有error边两个端点的树上路径交上。除此之外,我们可以发现一个奇环与一个与之有交的偶环也会形成一个奇环,所以我们删的树边显然不能在某个非error树边两个端点的树上路径上,不然无法消除此非error树边与其他奇环构成的奇环。

  综上,考虑树上差分将路径加改为子树加,并且应用dfs序即可。

 

    

在二分图上加一条边与其逆问题

原文:https://www.cnblogs.com/allvphx/p/8724568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!