/* 最小费用最大流的模型 在保证流量最大的前提下,所需的费用最小,这就是最小费用最大流问题. 基本思路: 把弧<u,v>的单位费用c看作弧<u,v>的路径长度,每次找从源点s到汇点t长度最短(费用最小)的可增广路径进行增广。 1. 最小费用可增广路 2. 路径s到t的长度即[单位流量]的费用。 ps:是网络流EK算法的改进,在求增广路径的时候,spfa每次求权值最小的增广路。 ps:要注意一点,逆边cost[i][j] = -cost[j][i],不能忘了加上去。 */ //#include<bits/stdc++.h> #include <cstdio> #include <cstdlib> #include <iostream> #include <cstring> #include <string> #include <vector> #include <cmath> #include <map> #include <queue> #include <stack> #include <set> #include <algorithm> using namespace std; #define For(i,a,b) for(int (i)=(a);(i) < (b);(i)++) #define rof(i,a,b) for(int (i)=(a);(i) > (b);(i)--) #define IOS ios::sync_with_stdio(false) #define lson l,m,r