最短路三连 最常见的三种最短路算法分别是Floyd,Dijkstra和Bellman算法 Floyd Floyd用于解多源最短路 复杂度为 $O(n^{3})$ 主要解决稠密图,可以解决负权边的问题 ...
分类:
其他好文 时间:
2020-04-07 00:18:47
阅读次数:
63
给定一个可以划分为不超过两个团的稠密图,以补图的形式描述。求有多少对点满足在它们之间建边后最大团的大小会增加。$n \leq 10^4, m \leq 1.5\times 10^5$ Solution 原图的最大团就是补图的最大独立集,由题意补图是二分图,于是转化为求删去哪些边可以使得二分图的最大独 ...
分类:
移动开发 时间:
2020-03-04 09:53:42
阅读次数:
101
最小生成树: 求一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 1:Prim算法(适合稠密图) 伪代码: Prim(G){ //G为图 int addnow[maxen];//记录当前有多少点被纳入集合; int lowcost[ ...
分类:
编程语言 时间:
2020-02-27 16:09:34
阅读次数:
71
==主题:遍历以邻接矩阵存储的有向图== 给出如下的图: A / \B C \ / D (这个图的边集={<A,B>,<A,C>,<B,C>,<B,D>,<C,B>,<C,D>,<D,C>},可以看出这是一张稠密图)将这张有向图转为邻接矩阵(出边)如下: A B C DA 0 9 2 XB X 0 ...
分类:
其他好文 时间:
2020-02-13 13:15:08
阅读次数:
66
图的存储方式 在说最短路之前,先介绍一下图的几个存储方式:主要有vector、邻接表和链式前向星三种存储方式。其中会牵扯到稀疏图和稠密图的概念, 稠密图指点的个数的平方和边的个数是一个数量级的($n^2 ≈ m$) , 两者数量级类似别称为稀疏图 。 G[maxn]; for(int i=1;i f ...
分类:
其他好文 时间:
2020-02-02 15:31:23
阅读次数:
74
/*每个点自己建立一座发电站相当于向超级源点连一条长度为c[i]的边,连电线即为(k[i]+k[j])*两点间曼哈顿距离,跑最小生成树(prim适用于稠密图,kruscal适用于稀疏图)*/ #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>usi ...
分类:
其他好文 时间:
2019-11-11 09:31:31
阅读次数:
84
简单的纯板。prim算法适合稠密图,kruskal算法适合简单图。prim算法复杂度O(n^2),n是图中点的个数,kruskal算法复杂度O(eloge),e为图中边的条数。值得一提的是,加入堆优化的prim算法复杂度可达O(nloge)。 这个是用链式前向星存边+堆优化的prim算法。 ...
分类:
编程语言 时间:
2019-11-03 01:23:29
阅读次数:
94
稠密图的拓扑排序,建图比较抽象,从起始站到终点站所有未访问的站台向已访问的站台连一条边 然后跑拓扑排序,记录一下每个节点对应的最大答案,最后输出即可 注意稠密图就别vector了,会究极MLE 并且由于有重边,每次删边的时候要让度数减去入边的条数,否则有些点一辈子也进不了队 代码: ...
分类:
编程语言 时间:
2019-10-11 20:37:58
阅读次数:
158
要表示一个图G=(V,E),有两种标准的表示方法,即邻接表和邻接矩阵。这两种表示法既可用于有向图,也可用于无向图。通常采用邻接表表示法,因为用这种方法表示稀疏图(图中边数远小于点个数)比较紧凑。但当遇到稠密图(|E|接近于|V|^2)或必须很快判别两个给定顶点手否存在连接边时,通常采用邻接矩阵表示法... ...
分类:
其他好文 时间:
2019-09-30 09:31:57
阅读次数:
102
最小生成树 (正边,负边都可以) Prim 朴素版 O(n^2) 稠密图,代码短,跟Dij很相似 算法流程(以点来扩展): 初始化dist [i] 为 正无穷 for i 0 ~ n ? 先集合外距离最近的点 赋值给 t ? 用 t 更新 其他点到 集合 的距离 ? st[t] = true; ? ...
分类:
其他好文 时间:
2019-09-21 12:52:29
阅读次数:
66