luogu P3381 【模板】最小费用最大流

原创 2018年04月17日 14:16:27

题目传送门:https://www.luogu.org/problemnew/show/P3381



题意:

有n个点,m条边,求从st到ed的最大流和流过去的最小费用。



思路:

模板题,不讲(只是留个存档)

PS:如果求最大费用最大流就将费用取反(正变负,负变正),最后再结果取反(正变负,负变正)。



代码:

#include<cstdio>
#include<queue>
#include<cstring>
#include<queue>
#include<algorithm>
#define INF 2147483647
using namespace std;
queue<int> f;
	int n,m,len=-1,st,ed;
	struct node{int x,y,c,d,next;} a[100010];
	int last[5010],dis[5010],pre[5010],pos[5010],p[5010];
	bool bz[5010];
void ins(int x,int y,int c,int d)
{
	a[++len].x=x;a[len].y=y;a[len].c=c;a[len].d=d;a[len].next=last[x];last[x]=len;
}
bool spfa()
{
	memset(bz,true,sizeof(bz));
	bz[st]=false;
	memset(dis,63,sizeof(dis));
	dis[st]=0;
	p[st]=INF;
	f.push(st);
	while(!f.empty())
	{
		int x=f.front();
		bz[x]=true;
		for(int i=last[x];i>=0;i=a[i].next)
		{
			int y=a[i].y;
			if(a[i].c>0&&dis[y]>dis[x]+a[i].d)
			{
				dis[y]=dis[x]+a[i].d;
				pos[y]=x;
				pre[y]=i;
				p[y]=min(p[x],a[i].c);
				if(bz[y])
				{
					f.push(y);
					bz[y]=false;
				}
			}
		}
		f.pop();
	}
	return dis[ed]<1061109567;
}
void flow()
{
	int ans1=0,ans2=0;
	while(spfa())
	{
		ans1+=p[ed];
		ans2+=p[ed]*dis[ed];
		for(int i=ed;i!=st;i=pos[i])
		{
			a[pre[i]].c-=p[ed];
			a[pre[i]^1].c+=p[ed];
		}
	}
	printf("%d %d",ans1,ans2);
}
int main()
{
	int x,y,c,d;
	scanf("%d %d %d %d",&n,&m,&st,&ed);
	memset(last,-1,sizeof(last));
	for(int i=1;i<=m;i++)
	{
		int x,y,c,d;
		scanf("%d %d %d %d",&x,&y,&c,&d);
		ins(x,y,c,d),ins(y,x,0,-d);
	}
	flow();
}

WordPress博客模板系统开发

不管是html/css,还是bootstrap,这些是让你能够设计网页的。然而网站大部分是动态的,需要持续的更新和维护,所以只是网页是无法实现动态网站的,我们需要把这些静态的网页和我们的数据库建立连接。使用wordpress制作的网站,模板就是连接前端网页和数据库的桥梁,所以这套视频我们就是教你学会模板制作的。
  • 2017年01月24日 17:25

费用流——洛谷P3381 【模板】最小费用最大流

https://daniu.luogu.org/problem/show?pid=3381 我学习了EK算法之后发现别人都学zkw的我靠; 跑的比我快我靠; 思想就是每次sfpa找到一条可以增广...
  • largecub233
  • largecub233
  • 2017-06-12 14:36:12
  • 237

洛谷P3381【模板】最小费用最大流

题目链接: https://www.luogu.org/problem/show?pid=3381 题目大意: 求最大流和费用流 题目思路: 最小费用最大流模板题,注意事项都在模板中标注...
  • qq_29980371
  • qq_29980371
  • 2017-10-13 16:23:43
  • 606

最小费用最大流 【模板】

如果理解了最大流连续增广路算法的思维, 理解这个算法还是很简单的。 结构体存储信息: 分别为边的起点、终点、容量、当前流量、费用、下一条边的编号。 struct Edge { int fr...
  • chenzhenyu123456
  • chenzhenyu123456
  • 2015-08-24 14:30:31
  • 3052

最小费用最大流详解与模板

最小费用最大流: 在最大流有多组解时,给每条边在附上一个单位费用的量,问在满足最大流时的最小费用是多少?思想: 给出一个容量网络,那他的最大流一定是一个定值(即使是有多个一样的最大值)。所以我们从...
  • STILLxjy
  • STILLxjy
  • 2016-07-27 16:54:55
  • 15705

最小费用最大流代码模板及注释

网络流 最小费用最大流模板和注释
  • tengfei461807914
  • tengfei461807914
  • 2017-01-28 12:52:49
  • 1262

【最小费用最大流模板】【Uva10806+Spring Team PK】Dijkstra, Dijkstra,

题意:从1到n 再从n到1 不经过重复的边 ,(如果是点就是旅行商问题了),问最短路 建立一个超级源S S到1连一条费用为0,容量为2的边,求费用流即可 如果流 否则    输出结果 模板...
  • zy691357966
  • zy691357966
  • 2015-04-05 16:39:11
  • 1013

最小费用最大流 修改的dijkstra

最小费用最大流 修改的dijkstra + Ford-Fulksonff算法 修改的dijkstra其实和Johnson算法的思想是一致的。  原地址:http://www.cppblog.com...
  • u014644714
  • u014644714
  • 2017-03-31 19:51:40
  • 565

最小费用最大流(讲解+模板)

         问题引入:最小费用最大流问题是经济学和管理学中的一类典型问题。在一个网络中每段路径都有“容量”和“费用”两个限制的条件下,此类问题的研究试图寻找出:流量从A到B,如何选择路径、...
  • haut_ykc
  • haut_ykc
  • 2016-08-07 16:40:02
  • 5097

最大流(SAP)及最小费用最大流(SPFA)模版

最小费用最大流 模版 一、最小费用最大流的模型 在保证流量最大的前提下,所需的费用最小,这就是最小费用最大流问题.   带有费用的网络流图: G=(V,E,C,W) V:顶点; E:弧;C:弧...
  • Dinivity123
  • Dinivity123
  • 2013-07-28 16:38:57
  • 2602
收藏助手
不良信息举报
您举报文章:luogu P3381 【模板】最小费用最大流
举报原因:
原因补充:

(最多只允许输入30个字)