系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 最短路 Floyd 基本思路:枚举所有点与点的中点,如果从中点走最短,更新两点间距离值.时间复杂度 \(O(V^3 )\). int n, m, f[N][N]; memset(f, 0x3f, sizeof(f)); for (int i=1, a, b, w; i<=m; i++) { scanf("%d%d%d", &a, &b, &…
系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 树链剖分 https://oi-wiki.org/graph/heavy-light-decomposition/ qRange:将树从 \(x\) 到 \(y\) 结点最短路径上所有节点的值都加上 \(val\) updRange:求树从 \(x\) 到 \(y\) 结点最短路径上所有节点的值之和 qSon:将以 \(x\) 为根节点的子树内所有节点值都加上 \(val\)…
系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 网络流 概念 1 容量网络(capacity network)是一个有向图,图的边 \((u, v)\) 有非负的权 \(c(u, v)\),被称为容量(capacity). 图中有一个被称为源(source)的节点和一个被称为汇(sink)的节点.图中每条边称为弧(arc). 实际通过每条边的流量记为 \(f(u, v)\). 残量网络(residual network)是一…
最短路算法(一) 最短路算法有三种形态:Floyd算法,Shortset Path Fast Algorithm(SPFA)算法,Dijkstra算法. 我个人打算分三次把这三个算法介绍完. (毕竟写太长了又没有人看QAQ……)但是这篇博客好像又双叒叕写的有点长,真的请各位耐心看完QAQ 今天先来介绍最简单的Floyd算法. Part 1:最短路问题是什么? 我们用专业一点的术语表达,大概是这样子的: 若网络中的每条边都有一个数值(长度.成本.时间等),则找出两节点(通常是源节点和阱节点)之间总…
我可能要退役了…… 退役之前,写一篇和我一样悲惨的算法:SPFA 最短路算法(二)SPFA算法 Part 1:SPFA算法是什么 其实呢,SPFA算法只是在天朝大陆OIers的称呼,它的正统名字叫做:队列优化的Bellman-Ford算法 在天朝,我们把它叫做“Shortest Path Fast Algorithm(SPFA)”翻译过来就是“快速最短路算法” Part 2:SPFA算法的原理和实现思路 声明:以下的三元组(x,y,z)表示点 i ->点 j 有边权值为z,dis[x]表示出发点…
本文来自:http://www.cnblogs.com/Findxiaoxun/p/3428516.html 写得很好,一看就懂了. 在这里就复制了一份. LCA问题: 给出一棵有根树T,对于任意两个结点u,v求出LCA(T, u, v),即离根最远的结点x,使得x同时是u和v的祖先. 把LCA问题看成询问式的:给出一系列询问,程序应当对每一个询问尽快做出反应. 对于这类问题有两种解决方法;一是用比较长的时间做预处理,但是等信息充足以后每次回答询问只需要用比较少的时间.这样的算法叫做在线算法.…
今天是算法数据结构专题的第33篇文章,我们一起来聊聊最短路问题. 最短路问题也属于图论算法之一,解决的是在一张有向图当中点与点之间的最短距离问题.最短路算法有很多,比较常用的有bellman-ford.dijkstra.floyd.spfa等等.这些算法当中主要可以分成两个分支,其中一个是bellman-ford及其衍生出来的spfa,另外一个分支是dijkstra以及其优化版本.floyd复杂度比较高,一般不太常用. 我们今天的文章介绍的是bellman-ford以及它的衍生版本spfa算法.…
图论算法-最小费用最大流模板[EK;Dinic] EK模板 const int inf=1000000000; int n,m,s,t; struct node{int v,w,c;}; vector<node> map[10010]; int flow[10010][10010]; bool inq[10010]; int d[10010]; int pre[10010],pref[10010]; int minc,maxf; int main() { cin>>n>>…
图论算法(一)存图 我发现我的博客阅读量贼低,问小伙伴们,ta们都说这些博客太长了QAQ! 今天来个短亿点的(也短不了多少……) 进入正题,图论究竟是什么? 图论就是给你一张图,让你在这张图上进行各种操作,但是我们要进行操作之前,要先明白图是什么. 如果你还不了解图是什么,我这里稍微BB一两句,如果你已经了解了图是什么,请直接去第二部分! Part 1:图是什么 我们先看一张图片: 假设有1,2,3,4,5五座城市, 我们用5个标号的圆圈(1,2,3,4,5)来表示这5个城市. 其中有一些城市之…
图论算法-网络最大流模板[EK;Dinic] EK模板 每次找出增广后残量网络中的最小残量增加流量 const int inf=1e9; int n,m,s,t; struct node{int v,cap;}; vector<node> map[100010]; int flow[10010][10010]; int a[100010]; int pre[100010]; int EK() { int maxf;//记录最大流量 queue<int> q; while(1) {…