[PKU 3715]Blue and Red(最小点覆盖集)

【题目大意】:

军事演习 分为红蓝方
但是有的兵是好友 不能被分在不同方
问最少删掉多少人 满足条件
输出 删掉人的序号(字典序最小)

【题目分析】:

一个天津的童鞋问我的~看了看……最开始悲剧了一下~

写写发现还可以,1A之~

比较裸的一个最小点覆盖集,konig定理证明就自己翻书吧~M67那里也有……

现在比较集中的问题在于字典序的问题。经典的方法就是试删。

因为原来就是一个二分图,所以我们就不该变原来的结构,0集合的都在左边,1集合的都在右边~

这样我们得到一个初始匹配,枚举点,删点,对于在X部的点,找匹配的Y点,然后沿着反向边找增广路,如果找不到,那么就这个点就删掉,否则不删~(P.s.找到增广路相当于找到了删除点的替代品~)

对于Y部的点,沿着正向边找增广路~然后情况同上。所以要写两个find函数~

【代码(为了省工写的是邻接矩阵~)】:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值