裸题,不用思考构图。
题目大意:
1 一个二分图,x集合是仓库,y集合是店面,每个x都通全部的y;
2 求:将x集合中全部的货物转移到y集合,最小费用和最大费用分别是多少。
解题思路:
1 网络流最难的一直是构图,但这题的图非常简单;
2 构图思路:(源点-〉x集合), (y集合 -〉汇点) ,( x-〉y);
3 最小费用最大流不难,直接用spfa来分层,然后回溯封路就好;
4 最大费用最大流:把费用取负,然后就变成了最小费用了~~输出取反就好!!
5 ps:对于点的结构体,多了一个c参数,为了推流量的时候用的。
上代码:
#include<cstdio>
#include<algorithm>
using namespace std;
const int inf=999999999;
int n,m,st,ed,len,tou,wei;
int na[110],nb[110],nc[110][110],l[50005];
struct nodx{int h,f,d,v,x,c;}a[500];
struct nodb{int x,y,c,d,gg,f;}b[50005];
void ins(int x,int y,int c,int d)
{
len++;b[