初学DinIc疑问
  • 板块学术版
  • 楼主Coros_Trusds
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/3/31 22:24
  • 上次更新2023/11/5 01:18:10
查看原帖
初学DinIc疑问
430409
Coros_Trusds楼主2021/3/31 22:24
inline int dfs(int u,int flow)
{
	int rlow=0;
	
	if(u==t)
	{
		return flow;
	}
	
	for(register int i=head[u];i;i=node[i].nxt)
	{
		int d=node[i].v;
		
		if(node[i].val>0 && dep[d]==dep[u]+1)
		{
			if(flow=dfs(d,min(flow,node[i].val)))
			{
				node[i].val-=rlow;
				
				node[i^1].val+=rlow;
				
				return rlow;
			}
		}
	}
	
	return 0;
}

inline int Dinic()
{
	int lowflow;
	
	while(bfs()==true)
	{
		while(lowflow=dfs(s,INF))
		{
			maxflow+=lowflow;
		}
	}
	
	return maxflow;
}

敢问上面的代码两个函数分别有什么用?能讲的详细点吗 (网上的看不懂)

2021/3/31 22:24
加载中...