foj 1844 题解题报告 + 源代码

题意:

 

       题目是说, 2008年汶川大地震中,可能大约有N(N<3000)个城市遭到了摧毁,如果一个城市遭到了摧毁,那么与这个城市相连的所有道路将会不通,现在已知道有m个城市(不包括1)没有被摧毁,现在这m个城市的人想回到第一个城市(第一个城市没有被摧毁),可他们都回不来,现在问你最少有几个城市被摧毁了,才能导致这种情况。这n各城市中的边数是<20000.

 

解题方法:

       这题的思路还是很容易的,就是把每个点拆成2各点a, a', 如果<a, b>是原图中的边,那么,就建这样的边,<a, b'>, <b, a'>, ,其中<a, b'> 和<b, a'>的容量是inf,再在原图中添加一个汇点t,把 m个没有的被摧毁的点(不包括1)的i',与t建一条边,容量是inf,然后对于原图中的每个点建一条边<a', a>,如果a是这m个点的话,则容量是inf否则容量是inf,然后求这个图的最大流就可以了。

      这个思路很简单,但是由于,n = 6001;所以一开始一直没找到高效的求最大流的算法,后来看了daxia的算法才知道,其实用dinic就可以了,看上去会TLE,其实不会的,因为这个图是稀疏图,边数在50000条左右,所以虽然该算法是n^3的但是,其实实际情况< n^2;这也就是为什么只有4个人过了这道题的原因吧。



一款非常好的锁屏APP软件: 酷划, 不仅好用, 而且还能赚钱, 官网地址: http://www.coohua.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值