http://acm.zju.edu.cn/show_problem.php?pid=2332
这是我自己出的一道题目,当初觉得整套题除了WinMine之外都比较简单,而靠WinMine这种算法性不是太强的题目卡别人总是不太好,于是希望能YY出一道难些的题目,结果也挺满意的,只有washingbone一人做出来,不过感觉他很汗,一下子就看出来了,小朋友们真厉害啊
这道题的想法出自sghao给的一道网络流的题题,我觉得那个建流的过程给了我很大启发(555,我太土,平时不注意学习)于是很喜欢那道题
这道题分成两部分
1、交换过程。
先找出所有的连通分支,
对于一个连通分支,我们证明事实上可以在保持这些点
上面gems个数总和不变的情况下任意安排每个点上gems的个数
因为
1、
每个连通分支至少是一棵树(我是说在去掉某些边之后。。
其实基本上是废话)
2、
每个树按照一定的顺序转化总可以调整到所需要的数目(不证明了,会写死的)
2、分配过程
1、从源点引边到每个连通分支,上限为gems总和
2、从源点引边到每个独立的点,上限为gems个数
3、从连通分支引边到每个具体的点,上限为inf
4、从每个具体的点引两条边,分别到我和我gf (lala)具体的行和列,上限inf
5、从每个行和列引边到汇点,上限为inf
求出最大流后如果流量等于总数则Yes