km算法在百度上讲的很清楚
讲一些针对这道题的
有n只蚂蚁要吃n个苹果,求总路径和最小,且不交叉的方案
网上有很多人说是计算几何题
其实,研究一下题意可以得出很重要的性质————最优方案一定不交叉。
根据三角形不等式
ad+bc<ac+bd dc+ab<ac+bd
因此,我们只需要构造二分图,求最小权和匹配
将所有蚂蚁看做一个集合,所有苹果看做一个集合,求出各蚂蚁到各苹果的距离并取反,在这个二分图上用km算法
容易发现这个模型是完全二分图,因此,加上slack优化可以快很多(在其他情况下slack优化优化为O(n^3),不过也有人说只优化常数)。
这道题的相等判断要注意精度,否则会死循环。