![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论
图论
云北海
风雨中抱紧自由
展开
-
最小生成树—(Kruskal算法 )
Kruskal 算法Kruskal算法的第一步是给所有边按照从大到小的顺序排列。这一步可以直接使用库函数qsort或者sort.接下来从小到大一次考察每个边(u,v)。情况1:u和v在同一个连通分量中,那么加入(u,v)后会形成环,因此不能选择。情况2:如果u和v在不同的连通分量,那么加入(u,v)一定是最优的。原因可用反证法证明——如果不加这条边能到得到一个最优解T,则T+(u+v)一定...原创 2019-01-23 22:13:25 · 305 阅读 · 0 评论 -
Bumped!详解—(Dijkstra堆优化,优先队列实现,结构体重载运算符)
Dijkstra堆优化算法 朴素的Dijkstra算法复杂度一般为O(n*n)的复杂度,能够解决大部分简单的最短路问题 而Dijkstra堆优化的复杂度为O(n*log n),其之所以能够优化是因为利用优先队列(经重载运算<后),使最小值存储在队列的头部,使每次取出的元素都是队列中最小值 结构体重载运算符...原创 2019-04-15 23:04:52 · 650 阅读 · 0 评论 -
数据结构之图论:迷宫探索(顺序,逆序保存路径)
今天刷的第二道水题dfs了,希望能慢慢理解dfs,bfs的精髓!!数据结构实验之图论四:迷宫探索Time Limit:1000 msMemory Limit:65536 KiBSubmitStatisticProblem Description有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关;请问如何从某个起点开始在迷宫中点亮所...原创 2019-04-04 21:10:55 · 408 阅读 · 0 评论 -
图的深度遍历—一道入门级的dfs水题
一道水题dfs。。。数据结构实验之图论二:图的深度遍历http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/problemlist/cid/2873Time Limit:1000 msMemory Limit:65536 KiBProblem Description请定一个无向图,顶点编号从0到n-1,...原创 2019-04-04 17:04:11 · 243 阅读 · 0 评论 -
NOIP 2009 —— 最优贸易 (图论,spfa算法)
题目描述C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 1 条。C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。商人...原创 2019-03-26 16:19:13 · 162 阅读 · 0 评论 -
LCA树上两点最近公共祖先(倍增算法)——例题:Design the city
LCA树上两点最近公共祖先(倍增算法) 对于一个树来说,有n个点,n-1个边,一定存在一个公共祖先 LCA就是寻找两点最近的公共祖先,并记录下路径 倍增是一种以数组anc[j][i]存储j这个结点的2^i的祖先,利用二分对两个节点同时往上走 预处理时间复杂度O(nlogn),每次查询时间复杂度O(logn),总时...原创 2019-03-06 17:04:37 · 388 阅读 · 0 评论 -
UVA1395 苗条的生成树 Slim Span —— kruskal算法
kruskal算法 求加权连通图的最小生成树的算法。 Kruskal算法的第一步是给所有边按照从大到小的顺序排列。这一步可以直接使用库函数qsort或者sort.接下来从小到大一次考察每个边(u,v)。情况1:u和v在同一个连通分量中,那么加入(u,v)后会形成环,因此不能选择。情况2:如果u和v在不同的连通分量,那么加...原创 2019-03-03 19:48:14 · 283 阅读 · 0 评论 -
图论—最短路之spfa算法
spfa算法(bellman算法优化而来)求图上单源最短路的算法思路基于宽度优先搜索(BFS)考虑目前站在任一点k,则可向前走一步,走一步就有更新最短距离的可能从起点出发向前试探性的走,队列辅助宽度优先搜索时间复杂度O(nlogn~n²)spfa算法需要用到队列的方法队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一...原创 2019-02-13 17:46:55 · 263 阅读 · 0 评论 -
最短路径问题(链式前向星,邻接矩阵)dijkstra算法
链式前向星 核心代码 for(int i=head[k];i!=-1;i=edge[i].next) //通过链表的结点遍历每一个相邻的点,找到最小的更新 { int t=edge[i].to; if(!vis[t]&amp;amp;amp;&amp;amp;amp;dis[t]&amp;amp;gt;dis[k]+edge[i].len) d...原创 2019-01-15 11:52:57 · 1151 阅读 · 0 评论 -
最短路径 floyd算法实现
Floyd适合数量较少的结点复杂度为O(n³)核心代码 for(k=1;k&lt;=n;k++) for(i=1;i&lt;=n;i++) for(j=1;j&lt;=n;j++) if(ship[i][j]&gt;ship[i][k]+ship[k][j]) ship[i][j]=ship[i][k]+ship[k][j];例题在每年的校赛里,所有进入决赛...原创 2019-01-15 13:54:35 · 261 阅读 · 0 评论 -
可达性统计(拓扑排序,链式前向星)
拓扑排序 演示过程(来自参考博客:https://blog.csdn.net/qq_41713256/article/details/80805338)第一步:对所有入度为0的点入队列第二步:bfs搜索队列,并把该入度为0的点顺序存储到新数组中,再把所有与该点相连的点的入度减一如上图所示,即实现对任意u->v,u都在v的左边可达性...原创 2019-04-09 17:21:26 · 285 阅读 · 0 评论