博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法模板——sap网络最大流 3(递归+邻接表)
阅读量:5876 次
发布时间:2019-06-19

本文共 1504 字,大约阅读时间需要 5 分钟。

实现功能:同前

程序还是一如既往的优美,虽然比起邻接矩阵的稍稍长了那么些,不过没关系这是必然,但更重要的一个必然是——速度将是一个质的飞跃^_^(这里面的point指针稍作了些创新——anti指针,这个指向当前弧的反向弧,便于路径增广时的操作,相比非递归里面非要用一个op函数来挨个找已经强多了!!!)

 

1 type 2     point=^node; 3     node=record 4                g,w:longint; 5                anti,next:point; 6     end; 7 var 8    i,j,k,l,m,n,ans,s,t:longint; 9    a:array[0..10000] of point;10    d,dv:array[0..10000] of longint;11 function min(x,y:longint):longint;inline;12          begin13               if x
nil do28 begin29 if (p^.w>0) and (d[x]=(d[p^.g]+1)) then30 begin31 k:=dfs(p^.g,min(flow-dfs,p^.w));32 dec(p^.w,k);33 inc(p^.anti^.w,k);34 inc(dfs,k);35 if dfs=flow then exit;36 end;37 p:=p^.next;38 end;39 if d[s]=n then exit;40 dec(dv[d[x]]);41 if dv[d[x]]=0 then d[s]:=n;42 inc(d[x]);inc(dv[d[x]]);43 end;44 begin45 readln(n,m,s,t);46 for i:=1 to n do a[i]:=nil;47 for i:=1 to m do48 begin49 readln(j,k,l);50 add(j,k,l);51 end;52 fillchar(d,sizeof(d),0);53 fillchar(dv,sizeof(dv),0);54 dv[0]:=n;ans:=0;55 while d[s]

 

转载于:https://www.cnblogs.com/HansBug/p/4292319.html

你可能感兴趣的文章
android app启动过程(转)
查看>>
Linux—源码包安装
查看>>
JDK8中ArrayList的工作原理剖析
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Applet
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
乌克兰基辅一世遗修道院起火 现场火光照亮夜空
查看>>
[iOS 10 day by day] Day 2:线程竞态检测工具 Thread Sanitizer
查看>>
Centos/Ubuntu下安装nodejs
查看>>
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
国内先进的智能移动广告聚合平台-KeyMob聚合
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
PHP - 如何打印函数调用树
查看>>
js闭包
查看>>
寒假。3.3.G - Common Child (最大公共子序)
查看>>
设计模式学习笔记--原型模式
查看>>
.Net 通过MySQLDriverCS操作MySQL
查看>>