![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 92
向上的未来IT魔术师
这个作者很懒,什么都没留下…
展开
-
网络流-最大流 DINIC算法及例题luogu P3376
DINIC是建立在增广路算法上的一种优化算法。 它的优点有两个: 多路增广 : 在找到一条增广路后,继续利用它剩余的流量找增广路,以达到在一次DFS中找到多条增广路,提高算法效率。 当前弧优化 : 标记当前路是否被访问过,若被访问过则跳过,这样可以省去原本EK算法中将多余处理的数据。 DINIC算法可分为两部分,一部分是BFS广搜寻找分层图(判断是否还有到达终点的路径即增广路存在的最基本条件),另一部分是DFS深搜查找增广路的值。 BFS部分代码 bool bfs() { queue<int&原创 2020-06-03 15:26:14 · 748 阅读 · 0 评论 -
关于求最短路径算法Dijkstra+堆优化的一些粗略讲解(模板)
用途 Dijkstra算法适用于求无负权边的图中点到点的最短路径问题,不可用于有负权边的图中。 算法的基本思想 选定一个初始点,在后续求得的距离也都是到这点的距离。 用 dis[] 数组来表示初始点到当前点的最短距离 遍历当前点连通的所有点,如果当前点满足条件,则更新当前点的 dis[] ,这一步称为 松弛 同时,将当前点最短距离和点的编号压入小根堆(距离短的在堆上方) 遍历堆中的元素,因为小根堆的缘故,先遍历的都是距离短的点,这样就可以保证松弛的数据越来越贴近我们的目的 重复3~5步,直到堆中没有元素为原创 2020-05-29 17:53:04 · 337 阅读 · 0 评论