摘要: struct Edge{ int from,to,cap,flow,cost;};struct MCMF{ int n,m,s,t; vector<Edge>edges; vector<int> G[MAXN]; int inq[MAXN]; int d[MAXN]; int p[MAXN]; int a[MAXN]; void init(int n){ this->n=n; for(int i=0;i<=n;i++)G[i].clear(); edges.clear(); } void... 阅读全文
posted @ 2013-03-04 21:23 z.arbitrary 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意:有个方阵,每个格子里都有一个非负数,从左上角走到右下角,每次走一步,只能往右或往下走,经过的数字拿走,换0每次都找可以拿到数字和最大的路径走,走k次,求最大和分析:最大费用最大流。因为点有权值,所以一般的做法是拆点,将一个点拆成两个点a和a',点的费用为权值,容量为1,然后再建一条边,边的费用为0,容量为INF,这样就能保证至少能通过这个点k次。。然后将a‘与右或下的点建一条边,边的费用为0,容量为INF..最后建一个超级源点和汇点,使之只能走k编。将超级源点与矩阵第一个点相连,费用为0,容量为k,超级汇点与矩阵最后一个点相连,费用为0,容量为k。这样,这个题的图就建完了。。一开 阅读全文
posted @ 2013-03-04 21:19 z.arbitrary 阅读(247) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/lyy289065406/article/details/6742534题意:有N个供应商,M个店主,K种物品。每个供应商对每种物品的的供应量已知,每个店主对每种物品的需求量的已知,从不同的供应商运送不同的货物到不同的店主手上需要不同的花费,又已知从供应商Mj送第kind种货物的单位数量到店主Ni手上所需的单位花费。问:供应是否满足需求?如果满足,最小运费是多少?分析:一开始将一个点拆成K个点,给过TLE了。。后来看题解发现分别把k种商品用最小费用最大流算出来就行了。。只要其中一种不满足,结果输出-1。手打的最小费用最大流模版,结果打错了,调试了半天。 阅读全文
posted @ 2013-03-04 21:09 z.arbitrary 阅读(216) 评论(0) 推荐(0) 编辑