网络流dinic板子

Posted starve

tags:

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

bool bfs(){
	memset(deep,0,sizeof(deep));
	queue<int>que;
	que.push(s);
	deep[s]=1;
	while(!que.empty()){
		int u=que.front();
		que.pop();
		for(int i=head[u];i!=-1;i=e[i].nextt){
			int v=e[i].v;
			if(e[i].w>0&&deep[v]==0){
				deep[v]=deep[u]+1;
				if(v==t)
					return true;
				que.push(v);
			}
		}
	}
	return deep[t]==0?false:true;
}
int dfs(int u,int fl){
	if(u==t)
		return fl;
	int ans=0,x=0;
	for(int i=cur[u];i!=-1;i=e[i].nextt){
		int v=e[i].v;
		if(e[i].w>0&&deep[v]==deep[u]+1){
			x=dfs(v,min(e[i].w,fl-ans));
			e[i].w-=x;
			e[i^1].w+=x;
			if(e[i].w)
				cur[u]=i;
			ans+=x;
			if(ans==fl)
				return ans;
		}
	}
	if(ans==0)
		deep[u]=0;
	return ans;
}
int dinic(int n){
	int ans=0;
	while(bfs()){
		for(int i=0;i<=n;i++)
			cur[i]=head[i];
		ans+=dfs(s,inf);
	}
	return ans;
}

  

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

网络流板子

网络流板子

poj-1459-最大流dinic+链式前向星

初涉网络流[EK&dinic]

网络流板子/费用流板子 2018南京I题+2016青岛G题

网络最大流算法—Dinic算法及优化