10最大流问题概述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10最大流问题概述

最大流问题;;基本概念;在可增广路径的基础上计算最大流;可增广路径的基本概念;可增广路径的定义;在可增广路径p上改进流量;残留网络;基于最大流定理上的最大流算法;Dinic算法;Dinic算法的基本流程;Dinic递归版;;function bfs:boolean; var i,f,r,tmp,v,u:longint; begin fillchar(level,sizeof(level),0); f:=1; r:=1; q[f]:=vs; level[vs]:=1; repeat v:=q[f]; tmp:=h[v]; while tmp-1 do begin u:=g[tmp].y; if (g[tmp].r0) and (level[u]=0) then begin level[u]:=level[v]+1; inc(r); q[r]:=u; if u=vt then exit(true); end; tmp:=g[tmp].next; end; inc(f); until fr; exit(false); end; ;function dfs(v,a:longint):longint; var ans,flow,tmp,u,value:longint; begin if (v=vt) or (a=0) then exit(a); ans:=0; tmp:=h[v]; while tmp-1 do begin u:=g[tmp].y; value:=g[tmp].r; if (level[u]=level[v]+1) then begin flow:=dfs(u,min(a,value)); if flow0 then begin g[tmp].r:=g[tmp].r-flow; g[g[tmp].op].r:=g[g[tmp].op].r+flow; ans:=ans+flow; a:=a-flow; if a=0 then break; end; end; tmp:=g[tmp].next; end; exit(ans); end;;begin fillchar(h,sizeof(h),$ff); readln(n,m); tot:=0; ans:=0; vs:=1; vt:=m; for i:=1 to n do begin readln(a,b,c); add(a,b,c); end; while bfs do begin ans:=ans+dfs(1,maxlongint); end; writeln(ans); end. ;;最大流最小割定理;最大权闭合子图;最大密度子图;;最小费用最大流;算法思想;算法思想;代码实现;begin fillchar(h,sizeof(h),$ff); readln(n,m); for i:=1 to m do begin readln(a,b,c,d); add(a,b,c,d); end; flow:=0; cost:=0; s:=1; t:=n; while spfa(s,t,flow,cost) do; writeln(flow, ,cost); end. ;function spfa(s,t:longint;var flow,cost:longint):boolean; var d,p,a:array[1..maxn] of longint; inq:array[1..maxn] of boolean; q:array[1..maxm] of longint; i,u,v,tmp,f,r:longint; begin fillchar(d,sizeof(d),$7f); fillchar(inq,sizeof(inq),false); d[s]:=0; inq[s]:=true;

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档