随笔分类 - 图算法
摘要:网络流24题 一、飞行员配对方案问题 题目背景 第二次世界大战期间,英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的两名飞行员,其中一名是英国飞行员,另一名是外籍飞行员。在众多的飞行员中,每一名外籍飞行员都可以与其他若干名英国飞行员很好地配
阅读全文
摘要:prufer序列 1.用处:可以解决和度数相关的树上计数问题。 2.性质 (1)prufer序列与无根树一一对应 (2)度数为di的结点会在prufer序列中出现di-1次。 参考后面的转化过程,每一个点有多少个子节点,就会在序列中出现多少次。然后当他没有子节点时,度数为1此时就会被删掉。累计计算d
阅读全文
摘要:图论板子 1.最短路 (1)Dijkstra 无堆优化: int n,m,G[N][N],d[N]; bool vis[N] = {false}; void Dij(int s){ for(int i = 1;i <= n;i++) d[i] = inf; d[s] = 0; for(int i =
阅读全文
摘要:链式前向星 有段时间没写图论了,准备敲一个前向星结果发现忘了....就挺尴尬的。 简单写一下吧。 前向星在逻辑上是和邻接表是一样的。 用一条链表记录每一个点的邻边就是邻接表。而链式前向星就是两个数组来把所有的边存下来。理论上这两种是一样的,但是用链表会多一个指针,而用vector也会让空间翻倍(容器
阅读全文
摘要:最短路径算法(3) 1.dijkstra的局限性 之前在dijkstra的证明当中,我们认为所有的边权为正,但如果为负是否还是正确的呢? 显然这是错误的。 我们认为每次迭代的离源点最近的路为最短路。这是因为之后的路不会更短了,毕竟后面的路都是正的。路径只会变长。 但是如果存在负的边,这就不行了,之后
阅读全文
摘要:最短路算法(2) 1.基于BFS的无权图最短路径 如果是无权图,我们遍历一张图就可以得到一棵树,很显然,每个节点的深度就是它的的最短路径长度。 BFS搜图的过程类似于树的层次遍历。也就是说我们在BFS遍历时就可以得到最短路径。而不是完全搜索整个图。但是我们需要一个变量来记录遍历的深度。 2.有权图的
阅读全文
摘要:最短路算法(1) 介绍floyd: 用于求全源最短路径的算法,这个代码非常简短好记,这里会记录两种应用。 1.简单模板优化以及处理连通性问题 这个算法可以用来求传递闭包(注释中有)。 代码如下: const int N = 100+50; const int INF = 500;//这个不可以太大,
阅读全文
摘要:割点/割边 1.定义: 对于一个无向图, 如果删除一个点,可以让一个图的连通分支数增加。那么这个点就是割点, 同样的,对于一条边,删掉之后可以让一个图的连通分支数增加,那么这条边就是割边。 2.关键的性质: 对于一条在连通图G中的割边e,一定存在这样的性质: e不在G中的任意一个圈上。 如果我们对一
阅读全文
摘要:有向图的连通性SCC(1) 之前暑假学tarjan时一直无法理解,现在有了一些浅薄的想法之后,写下一篇稚嫩的博客 以作记录。 一.先了解什么是强连通 (1)强连通:对于,u,v两点,u到v可达,并且v到u可达。那么我们称u,v强连通。 (2)强连通图:对于图G中的任意有序对(u,v)都是强连通的。
阅读全文

浙公网安备 33010602011771号