[POJ 2112]

Optimal Milking

二分 + 最大流

题意是,有向图上有nm个终点和nc个源点,终点和源点间的边有距离d,每个终点最多可以和f个源点相连,设当所有源点都和某个终点相连时最大距离的边为mxd,求mxd最小可以是多少。

首先还是将问题转化为判定问题:对于边距离最多为md的情况,判是否存在一个匹配方案。具体的判断方式可以用最大流,方法是引入超级源点S连每个源点,距离为0,流量为1,每个终点连超级终点,距离为0,流量为f,源点和终点间的边流量为正无穷。每次求最大流时,忽略d>md的边,并且仅当求得的最大流值等于nc时判为可行。

另外这题给出的源点和终点间的边用了一个邻接表来描述,还要跑一次floyd来求出实际最小距离,然后也没有其他难点了。