费用流板子

Posted starve_to_death

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了费用流板子相关的知识,希望对你有一定的参考价值。

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);
	}
}

  

以上是关于费用流板子的主要内容,如果未能解决你的问题,请参考以下文章

费用流板子 dij&spfa

B1877 [SDOI2009]晨跑 费用流

[ZJOI2010]网络扩容

费用流bzoj1877: [SDOI2009]晨跑

Coding Contest HDU - 5988(费用流)

[网络流24题]运输问题