题目链接 :
【POJ】点击打开链接
【caioj】点击打开链接
算法 :
1:跑一遍弗洛伊德,求出点与点之间的最短路径
2:二分答案,二分”最大值最小“
3.1:建边,将原点与每头奶牛连边,流量为1,记dist[i][j]为i到j的最短路径,若dist[i][j]<=mid (K+1<=i<=K+C,1<=j<=K),则将i与j连边,流量为M,将每台挤奶机与汇点连边,流量为1
3.2 : 跑网络流,这里笔者使用的是dinic算法
3.3 : 判断最大流S是否等于K,等于K,则往小搜,否则往大搜
代码 :
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include