码迷,mamicode.com
首页 > 其他好文 > 详细

费用流板子

时间:2019-05-20 01:09:13      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:set   pre   size   har   mem   amp   min   return   while   

bool spfa(){
	queue<int>que;
	que.push(s);
	memset(dis,INF,sizeof(dis));
	dis[s]=0;
	while(!que.empty()){
		int u=que.front();
		que.pop();
		vis[u]=0;
		for(int i=head[u];~i;i=edge[i].nextt){
			int v=edge[i].v;
			if(edge[i].w&&dis[v]>dis[u]+edge[i].cost){
				dis[v]=dis[u]+edge[i].cost;
				if(!vis[v])
					que.push(v),vis[v]=1;
			}
		}
	}
	return dis[t]!=INF;
}
int dfs(int u,int fl){
	if(u==t){
		return fl;
	}
	int ans=0;
	vis[u]=1;
	for(int i=cur[u];~i;i=edge[i].nextt){
		int v=edge[i].v;
		if(!vis[v]&&edge[i].w&&dis[v]==dis[u]+edge[i].cost){
			cur[u]=i;
			int x=dfs(v,min(fl-ans,edge[i].w));
			ans+=x;
			edge[i].w-=x;
			edge[i^1].w+=x;
			mincost+=x*edge[i].cost;
			if(ans==fl)
				break;
		}
	}
	vis[u]=0;
	return ans;
}
void MCMF(){
	
	while(spfa()){
		for(int i=0;i<=t;i++)
			cur[i]=head[i];
		dfs(s,INF);
	}
}

  

费用流板子

标签:set   pre   size   har   mem   amp   min   return   while   

原文地址:https://www.cnblogs.com/starve/p/10891576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!