uva11082

紫书解法还是很巧妙的,自己想真的挺难想到的

图论的题建图真的不容易

具体解法紫书已经说的很清楚了,这里解释下为什么那样做是对的

假设有R行C列

首先求出了每一行每一列的值之后我们做的工作就是需要将每一行的总和分成C份,第一份给第一列,第二份给第二列,依次类推

分配完之后只要每一列的和满足题目要求我们就找到了满足题目要求的一组解

然后我们可以将分配看做看做运送货物,并按照这个标准去建图

将行和and列和看做节点,每一行与每一列都建立一条边,边的容量最大为19

然后我们就可以从行节点开始向列节点运送货物了,只要运送的结果是每个列节点拥有的货物总数满足要求就行了

但肯定不可能对这个图直接做,太困难,我们增加源点s和终点t,并且s向每个行节点连一条边容量为对应行和,另外每个列节点向终节点连一条边,容量为对应列和

然后从s向t求一次最大流,只要终点的货物是所有行和的总和就说明有解

另外由于题目保证有解,所以我们可以省略这个判断,直接输出即可

猜你喜欢

转载自www.cnblogs.com/033000-/p/10051171.html
今日推荐