看着很像网络流,但是费用流貌似无法解决这个问题,其实甚至连忽略d的情况都做不到。
最小割?
将顶层和底层分成两个集合,切一次就相当于两个集合分开。
所以我们(i,j,k)->(i,j,k+1)边权为val(i,j,k)就可以做忽略d的情况了。
那么有d也很简单,只需要想你切完了一条边之后,不能让你身边的切哪些边即可。
画个图,我们就能发现(i,j,k)->(i,j,k-d)和(i,j,k+d+1)->(i,j,k+1)边权为INF就能保证如果切了非法的边仍然能保证连通。
(当然在遍历的时候后者的边也是前者的边,于是我们只需要加前者的边即可。)
#include
+++++++++++++++++++++++++++++++++++++++++++
+本文作者:luyouqi233。 +
+欢迎访问我的博客:+
+++++++++++++++++++++++++++++++++++++++++++