pku1815 割边

这题wa了N次,就是改某个图不改某个图的问题。。

题目大意:

  一群人,1表示两个人能联系0表示两个人不能联系,一个起点s一个终点t,问最少删除多少个点能使s到t收不到信息,并且让你给出一组解,要求字典序最小。

简略题解:

  显然就是最大流。

  把每个点拆成两个点i,i',从i向i'连一条容量为1的边,如果i和j能联系,那么从i'向j连一条容量为无穷的边。从s向s'连一条容量为无穷的边,从t向t'连一条容量为无穷的边。那么求这个网络的最大流就是第一问。

  那么如何给出一组解呢,直接dfs是不行的,因为要求字典序了。我用了一个比较shax的办法就是按字典序枚举,然后删点,看最大流是否减小,若减小了那么就记录一下并且把这个点真正删掉。。这样会很慢,然后纠结的跑了500+ms。

  其实还可以用dfs会很快,就是每删掉一个点,就从t到s开始dfs一条路径,这条路径包含i’--->i,如果到了说明有解。。我是后来才搜到这种方法的,所以没改。。

附程序:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值