foj 1844 题解题报告 + 源代码

题意:

 

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

 

解题方法:

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

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



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

你可能感兴趣的:(foj 1844 题解题报告 + 源代码)