pku2987 最小割,最大权闭合图

来源:互联网 发布:stm8单片机功耗 编辑:程序博客网 时间:2024/04/30 11:01

好吧, 我一开始认为我网络流还可以的,毕竟ctsc拿到题拿到了全场最高分(30分,集训队有10人左右拿到)。今天我发现我不论什么都很菜的,比如说上午的初赛吧。。额,,这个一会说,反正刚才这个题我就菜了,连割边都不会求的菜,终于知道割边原来用dfs。。

题目大意:

  给你一个图,上边有n个点,每个点有一些关系A,B表示A是B的上司,现在要你裁人,如果裁了一个人就要裁他的下属。好了,每个人都有一定的权值,让你求两个问题:

  1.裁完人的最大权值

  2.满足第一个条件的最少人数

  (其实这两问输出时倒过来的)

简略题解:

  恩,网络流。

  首先,添加源点st和汇点ed。对于w[i]>0的从源点向这个点连一条边,流量为w[i],否则从这个点向汇点连一条边,流量为-w[i]。然后对于有关系的A和B,从A向B连一条边,流量为无穷。

  求这个图的最大流,最大的流量就是最小割,然后所有w[i]>0的sum-最小割就是第一问的答案。

  然后从源点开始dfs,能够达到的点的个数就是第二问的答案。

附程序: