思路:这题刚开始看就知道是最小费用最大流了,因为求出最优嘛,而且要m,H要一一对应,所以不是二分图匹配就是最小费用最大流。
不过,刚开始还在想每个m与H之间的最小花费如何求,难道要用dfs搜索吗?这样想之后看了下题目给的时间是1000ms,然后就把dfs搜索m与H之间的最短距离排除了。然后想了想,其实尼玛太简单了,因为题目说了只能垂直与竖直的走,所以最短距离不就是两个横坐标相减与两个纵坐标相减之和嘛!
然后每对m与H之间都连边,流量为1(因为每对匹配不能重复),费用为它们之间的距离即花费;然后建超级源点和超级汇点,源点和每个m相连,流量和上面一样也是1(单一匹配嘛),费用为0,因为它们之间不产生花费;汇点和源点建边一样。
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
#include