别人提供了一个解决方案,http://dementrock.blog.com/2009/06/usaco-442-pollutant-control/
很明显地,这是一个最小割的模型,设每边的权值为原始权值,则最大流的值就是最小割的容量,即最小损失。现在有两个问题:停止的线路数,使开始输入顺序最小。
为解决这两个问题,可将每边的权值修改为500000+i+500000*1001*c,这个式子有什么用呢?首先,每边的权值都加上500000,那么最大流(maxflow%(500000*1001))/500000就是停止的线路的数量,取500000的原因是500000>(0+999)*1000/2,即最大情况下0~999的i的和,否则可能由于i的值而使结果偏大。i项的含义就很明显了,为使输入顺序最小。最后一项中的1001则是因为最多有1000条边,所以500000*1001*c > 500000*1000,这三项分别独立,从而得出结果。
没有想明白。
而我想的深度遍历的情况,也超时了。
运行结果如下:
有空再回头想想这道题吧。啃了三天都没啃动。悲剧!!