网络流总结
本文旨在用几句话描述每个算法,让笔者在未来需要使用这些算法的时候能回忆起来。
一、EK算法
通过BFS找到一条增广路,将其减1,反向边+1。 持续到无法增广。 是dinic算法弱化版。
二、dinic算法
先bfs,分层,再有方向性的dfs找到流量,把反向边加上权值。
三、SAP算法
是EK算法的优化版,定义允许弧为d[i]=d[j]+1(部分代码d[T]=0)的弧,那么就能保证每次运行的时候是有方向性的,故其效率符合要求。至于维护d数组,发现一个点没有允许弧的时候,他的d就是所有邻接点的最小值+1。使用栈存目前的允许弧,如果允许弧被改变后,改弧到栈顶的元素弹出。