首先,这个题还是蛮有意思的,,,
其次,一个sb的bug整了我一下午
题意:给出一个流量网络,告诉你每条边流量的上限,每个点(除了源点和汇点)都满足流量平衡,即流进 = 流出 ,还有一个关键的条件是对于任意的x y,从x走到y的流量和相等,流量和为从x到y每条边的流量相加(有正有负)。最后让你输出一种网络流的方案,使得总的流量最大
对于任意两个点,不管走哪条路径,流量和都是定值,这个有点类似于物理中的势能,从一个高度到达另一个高度,势能差不变,借此思路,可以设每个点的势能为x[i],那 边i j之间的流量就为x[j] - x[i],由每个点都满足流量守恒(除源汇外),可以列出n-2个方程来,举个例子,对于i这个点,枚举所有的邻接点j
x[i] - x[j1] + x[i] - x[j2] + x[j3] - x[i] .... = 0 (要分 i->j ,还是 j->i ,相应的系数就++ -- )
然后x1 和 xn随便设两个常数就好了,假设设为1 2 。
这样构造好方程解出来一组可行解,是忽略了每条边的流量限制的,现在,将每条边的流量限制放进去,可以算出每条边最大的容量
解是成比例的。