bzoj4519[Cqoi2016]不同的最小割
题目在这里呀
这是我第一次遇到最小割树,特地写一个题解来记忆一下啊。(话说12月份好像好久没更博了ww)
最小割树=分治+最小割
此题的要求嘛就是求两两点对之间不同的最小割有几种。
再概括一下就是把n个点分成两部分,最小割就是两个部分的点之间的连边之和,求这个不同的和有几个。
注意到最小割树是针对无向图的。
这里就来讲一下最小割树的实现(这是道裸的最小割树辣)
1、先将所有点放在同一个集合中,任取两个点(方便起见用1和n),跑一遍最小割
2、这样就把整个集合分成了S集和T集
3、继续更新两个集合内的答案,按此方法递归下去
虽然dinic的时间复杂度是O(n^2*m),但注意到n指数级减小,所以不会T。这应该是道简单的模板题吧。
代码也很好懂的。
#include
#include
#include
#include
#include
#include
#include